会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132390个问题
Python 全系列/第五阶段:数据库编程/mysql的使用 3871楼
WEB前端全系列/预科阶段:职业规划/学习方法/程序员的职业规划 3873楼
Python 全系列/第五阶段:数据库编程/mysql介绍与环境安装 3874楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 3876楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 3877楼

对于线程冲突的理解:

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

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技术详解(旧) 3879楼

image.png

Python 全系列/第一阶段:Python入门/编程基本概念 3880楼
JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/Zookeeper 3881楼
Python 全系列/第五阶段:数据库编程/MySQL数据库的使用 3883楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask之Jinja2模版 3884楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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