首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

这样条件上的HttpServlet是线程安全的吗

2013-02-20 
这样条件下的HttpServlet是线程安全的吗?这两天在看关于servlet线程安全问题,提到说它是不安全的,因为多个

这样条件下的HttpServlet是线程安全的吗?
这两天在看关于servlet线程安全问题,提到说它是不安全的,因为多个访问请求面对的是同一个HttpServlet对象,我很快想到了这么一个问题,假设有一个HttpServlet的dopost方法,这个dopost方法内部有一个
StringBuffer result = new StringBuffer();
然后这个result接下来会多次append一些字符串,最后,输出这个字符串给客户端。

如果按照线程不安全的模型理解,这个result是安全的吗?多个线程请求都来调用同一个对象的dopost方法时,dopost内部定义的变量算全局的还是线程局部的,是安全的吗?

如果说这个是安全的,那么在dopost之外,定义的pirvate字段,比如
private String cmd = null;

然后这个cmd在dopost方法中被赋值,然后被使用。假设多个请求访问,会不会发生线程安全问题,比如发生请求A将cmd设置为“我要吃饭”,但是在使用cmd的时候,却发现这个cmd已经被请求B改成了“我要喝水”?
[解决办法]
dopost里面的result变量是局部变量,不存在线程资源的竞争问题
cmd是类的成员变量,存在资源的竞争,多线程下需要考虑线程安全
[解决办法]
第一种情况是安全的,第二种情况是不安全的

热点排行