论坛首页 Java企业应用论坛

Servlet的线程安全问题

浏览 23301 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-26  
楼主分析的很好,最近我也在研究servlet为什么不是多线程的,开会了,回来再说,呵呵。。。
servlet是单例的还是很有道理的!
0 请登录后投票
   发表时间:2009-06-01  
Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有实例变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存由缓存和堆栈两部分组成,缓存中保存的是主存中变量的拷贝,缓存可能并不总和主存同步,也就是缓存中变量的修改可能没有立刻写到主存中;堆栈中保存的是线程的局部变量,线程之间无法相互直接访问堆栈中的变量。
0 请登录后投票
   发表时间:2009-06-17  
看了上面大家的讨论,我的理解是:属于某个线程的数据不会出现同步的问题,例如方法中的局部变量,而不属于线程的数据,例如类中的成员变量,由于他是对该类的对象共享的,如果多个线程拥有一个对象的同一个引用,就会出现同步的问题。
0 请登录后投票
   发表时间:2009-07-09  
kaneg 写道
其实说简单一点就是:
servlet是单实例多线程运行方式,所以对象变量线程不安全,局部变量线程安全


同意! local variable不存在race condition, 但是instance variable存在race condition.
请诸位看这里,
http://book.javanb.com/java-concurrency-in-Practice/ch02lev1sec2.html

The definition of race condition,
The possibility of incorrect results in the presence of unlucky timing is so important in concurrent programming that it has a name: a race condition.
0 请登录后投票
   发表时间:2009-07-24  
很奇怪,这么多人讨论servlet,就没人看过servlet spec?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics