摘要: 从上面图中我们可以看到,由于ThreadLocal所操作的是维持于整个Thread生命周期的副本(ThreadLocalMap),所以无论在 J2EE程序的哪个层次(表示层、业务逻辑层或者持久层),只要在一个Thread的生命周期之内,存储于ThreadLocalMap中的对象都是 线程安全的(因为ThreadLocalMap本身仅仅隶属于当前的执行线程,是执行线程内部的一个属性变量。我们用图中的阴影部分来表示这个变量的存储空间)。而这一点,正是被我们用于来解决多线程环境中的变量共享问题的核心技术。ThreadLocal的这一特性也使其能够被广泛地应用于J2EE开发 中的许多业务场景。 阅读全文
posted @ 2012-09-07 23:45 zero516cn 阅读(2838) 评论(0) 推荐(1) 编辑
摘要: 设计模式(Design pattern):是经过程序员反复实践后形成的一套代码设计经验的总结。 ThreadLocal模式:用来解决多线程程序中数据共享问题的一个方案。 阅读全文
posted @ 2012-09-07 19:29 zero516cn 阅读(7928) 评论(1) 推荐(1) 编辑
摘要: 在Java里,线程安全一般体现在两个方面:   1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized。如 ArrayList和Vector,HashMap和Hashtable(后者每个方法前都有synchronized关键字)。如果你在 interator一个List对象时,其它线程remove一个element,问题就出现了。   2、每个线程都有自己的字段,而不会在多个线程之间共享。它主要体现在java.lang.ThreadLocal类,而没有Java关键字支持,如像static、transient那样。 阅读全文
posted @ 2012-09-07 17:18 zero516cn 阅读(9897) 评论(0) 推荐(1) 编辑
摘要: 介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 阅读全文
posted @ 2012-09-07 14:08 zero516cn 阅读(22441) 评论(4) 推荐(6) 编辑