ThreadLocal究竟有什么作用?  实在不理解API里的字眼,  那位高手能给个通俗的解释,比如在什么情况下我们可以考虑使用它,

解决方案 »

  1.   


    谢谢,那使用它的好处呢?我看见好多地方用它来封装static变量,这样做的意义是什么?
      

  2.   

    这个类的用处可以简单说明如下:在类X中,包含public static ThreadLocal local = new ThreadLocal();然后在X.methodA()中调用了local.set(objA),然后可以在X的其它方法或者其它类中都可以调用X.local.get()返回这个objA
    ThreadLocal比直接使用static更好的地方在于:线程A调用了local.set(objA),然后线程B调用了local.set(objB)
    在线程A中再调用local.get()返回的是objA而不会是objB,线程B中会返回objB
    这个类最常用的地方就是,X.methodA中将objA保存到local中,然后X.methodA继续调用其它方法,但是由于各种原因,不方便将objA一层层的传递到这些方法中,但是在Y.methodB中可能需要这个objA,就可以直接调用local.get()了
      

  3.   

    那跟session里保存有什么区别?
      

  4.   

    问题在于你在Y.methodB中可能根本无法得到session对象,而且在用户同时刷新两个页面时也会冲突