对于线程冲突的理解:
在两个浏览器中输入的内容
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已经被关闭了,所以后面的输出代码失去作用。
老师是这样的过程吗?