日期:2014-05-20  浏览次数:20611 次

ThreadLocal类用来作什么的,最好用一个例子,分不够再加???
谢谢!

------解决方案--------------------
相信大家一般接触ThreadLocal 都是从HibernateUtil这各类吧

可以这么理解

ThreadLocal 就是为每个线程一些私有的数据

通过ThreadLocal 为每个Thread 保存一个自己的session

避免数据共享错误和安全性问题


------解决方案--------------------
http://www.ibm.com/developerworks/cn/java/j-threads/index3.html
------解决方案--------------------
简单来说就是,各个线程访问同一个ThreadLocal对象实例(一般会一个是静态变量)

线程A中调用threadLocal.set(objA)方法后
线程B中调用threadLocal.set(objB)方法后

线程A调用threadLocal.get()仍然是返回objA,而不受到线程B的影响
同样线程B中也只会得到objB,不受A的影响


这个类最大作用就是如同HibernateUtil中的作用,使得在不用作为参数传递到下面各个类的情况而直接访问到最上一层设置的值

例如,在HibernateUtil中调用过了set方法,那么你的类中不需要理会这个Session的传递,不需要每个类都定义这个参数,而直接在最底一层的时候直接调用get方法

它保证了不会get出一个错误的Session,简化了参数传递
------解决方案--------------------
java ThreadLocal = Win32 TLS :)
用过WIN 32 的, 一看就明白