会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132449个问题
Python 全系列/第十二阶段:Python_Django3框架/Django初级 34126楼

老师你好,在测试的时候出现了错误,请您帮忙看一下

错误截图

image.png

image.png


源码

package server;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.Charset;

import IOCloseUtil.IOCloseUtil;
import Servlet.Servlet;

public class Server {//用于服务器的启动与停止
	private ServerSocket server; 
	public static void main(String[] args)  {
		Server server = new Server();
		server.start();
	}
	public void start()  {
		this.start(8888);
	}
	public void start(int port)  {
		try {
			server = new ServerSocket(port);
			this.receive();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	private void receive()  {
		try {
			//监听
			Socket client = server.accept();
			
			/**封装请求信息*/
			Request req = new Request(client.getInputStream());
			/**做出响应*/
			/*
			StringBuilder sb = new StringBuilder();
			sb.append("HTTP/1.1").append(" ").append(200).append(" ").append("ok").append("\r\n");
			sb.append("Content-type:text/html;charset=utf-8").append("\r\n");
			//内容
			String str="<html><head><title>响应结果</title></head><body>成功<body></html>";
			sb.append("Content-Length:"+str.getBytes("utf-8").length).append("\r\n");
			sb.append("\r\n");
			sb.append(str);
			
			//通过输出流发送出去
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
			bw.write(sb.toString());
			bw.flush();
			bw.close();
			*/
			Response rep = new Response(client.getOutputStream());
			Servlet servlet = WebApps.getServlet(req.getUrl());
			int code =200;
			if(servlet==null) { //servlet未创建成功
				code = 404;
			}
			//调用Servlet中服务的方法
			try {
				servlet.service(req, rep);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			rep.PushToClient(code);
			IOCloseUtil.closeAll(client);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 34131楼
Python 全系列/第一阶段:Python入门/控制语句 34132楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 34133楼

一、代码

#coding=utf-8

import threading
import time
from queue import Queue

class Pro(threading.Thread):
    def run(self):
        global q
        count=0
        while True:
            if q.qsize()<100:
                for i in range(10):
                    count = count+1
                    msg = "生成产品"+str(count)
                    q.put(msg)
                    print(msg)
            time.sleep(1)

class Con(threading.Thread):
    def run(self):
        global q
        while True:
            if q.qsize()>10:
                for i in range(3):
                    msg = self.name + "消费了" + q.get()
                    print(msg)
            time.sleep(1)


if __name__ == "__main__":
    q = Queue()
    for i in range(50):
        q.put("初始产品"+str(i))
        print("初始产品"+str(i))
    for i in range(2):
        p = Pro()
        p.start()
    for i in range(5):
        c = Con()
        c.start()

二、运行结果

生成产品1

生成产品2

生成产品3

生成产品4

生成产品5

生成产品6

生成产品7

生成产品8

生成产品9

生成产品10

Thread-3消费了初始产品0

Thread-3消费了初始产品1

Thread-3消费了初始产品2

Thread-4消费了初始产品3

Thread-4消费了初始产品4

Thread-4消费了初始产品5

Thread-5消费了初始产品6

Thread-5消费了初始产品7

Thread-5消费了初始产品8

Thread-6消费了初始产品9

Thread-6消费了初始产品10

Thread-6消费了初始产品11

Thread-7消费了初始产品12

Thread-7消费了初始产品13

Thread-7消费了初始产品14

Thread-4消费了初始产品15

Thread-4消费了初始产品16

Thread-4消费了初始产品17

生成产品11

生成产品12

生成产品13

生成产品14

生成产品15

生成产品16

Thread-3消费了初始产品18

Thread-3消费了初始产品19

Thread-3消费了初始产品20

生成产品11

生成产品12

生成产品13

生成产品14

生成产品17

生成产品18

生成产品19

生成产品20

生成产品15

生成产品16

生成产品17

Thread-7消费了初始产品21

Thread-6消费了初始产品22

Thread-6消费了初始产品23

Thread-6消费了初始产品24

Thread-7消费了初始产品25

生成产品18

生成产品19

Thread-7消费了初始产品26

Thread-5消费了初始产品27

Thread-5消费了初始产品28

Thread-5消费了初始产品29

生成产品20

Thread-4消费了初始产品30

Thread-4消费了初始产品31

Thread-4消费了初始产品32

Thread-3消费了初始产品33

Thread-3消费了初始产品34

Thread-3消费了初始产品35

Thread-5消费了初始产品36

Thread-5消费了初始产品37

Thread-5消费了初始产品38

Thread-6消费了初始产品39

Thread-6消费了初始产品40

Thread-6消费了初始产品41

生成产品21

生成产品22

生成产品23

生成产品24

生成产品25

生成产品26

生成产品27

生成产品28

生成产品21

生成产品22

生成产品23

生成产品24

生成产品25

生成产品26

生成产品27

Thread-7消费了初始产品42

Thread-7消费了初始产品43

Thread-7消费了初始产品44

生成产品29

生成产品30

三、问题

上述程序创造了2个产生数据的线程p1、p2,和五个输出数据的线程c1/2/3/4/5,产生数据的线程是一个循环,产生10个数据,消费数据的线程是输出3个线程,我知道线程之间是交替执行的,但是从结果中看出,一个线程的循环都没有结束都跳去了另一个线程里呢,而且还没有规律,请问老师这样是为什么?线程交替运行这么不可控,他存在的意思是啥,都不能用来计算?

Python 全系列/第三阶段:Python 网络与并发编程/并发编程 34134楼
Python 全系列/第一阶段:Python入门/面向对象 34135楼

image.png

JAVA 全系列/第四阶段:网页编程和设计/CSS3(旧) 34137楼
WEB前端全系列/第十一阶段:Nodejs编程模块--/Nodejs基础 34138楼
WEB前端全系列/第十一阶段:Nodejs编程模块--/Nodejs基础 34139楼
Python 全系列/第一阶段:Python入门/控制语句 34140楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637