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