会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 151楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 152楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 153楼
JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 154楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 155楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 157楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 160楼
JAVA 全系列/第五阶段:JavaWeb开发/Ajax技术详解(旧) 161楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 162楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 163楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 164楼

对于线程冲突的理解:

在两个浏览器中输入的内容

360浏览器:http://localhost:8888/WebDemo/safe.do?name=aaa

Microsoft Edge浏览器:http://localhost:8888/WebDemo/safe.do?name=bbb

当我在360中输出name=aaa后发送请求,Tomcat创建Servlet对象并生成线程1,再在Edge中发送请求name=bbb

使用的是同一个Servlet对象并生成线程2。线程1中name=aaa,pw=resp.getWriter()创建的是线程1的pw后进入线程休眠状态,这时线程2启动name=bbb,pw=resp.getWriter()创建的是线程2的pw,因为PrintWriter pw是成员变量,是被线程共享的,所以在这时线程2的pw覆盖线程1的pw。当线程1结束休眠运行时输出name值aaa,由于pw被覆盖此时是线程2的pw,所以会把aaa输入到Edge浏览器,360浏览器没有输出值,然后pw刷新关闭。这时线程2激活,但pw已经被关闭了,所以后面的输出代码失去作用。

老师是这样的过程吗?

JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 165楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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