有谁用过ThreadLocal类,介绍一下,看了很多文章说和线程同步有关,可我感觉和同步没有关系呢,邦忙介绍一下

解决方案 »

  1.   

    再做一次剪切工,看帮助文档吧,要是还不行就google一下啊.
    类 ThreadLocal<T>
    java.lang.Object
      java.lang.ThreadLocal<T>
    直接已知子类: 
    InheritableThreadLocal --------------------------------------------------------------------------------public class ThreadLocal<T>extends Object该类提供了线程局部变量。这些变量不同于它们的普通对应物,因为访问一个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的私有静态字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。 例如,在下面的类中,私有静态 ThreadLocal 实例(serialNum)为调用该类的静态 SerialNum.get() 方法的每个线程维护了一个“序列号”,该方法将返回当前线程的序列号。(线程的序列号是在第一次调用 SerialNum.get() 时分配的,并在后续调用中不会更改。)  public class SerialNum {
         // The next serial number to be assigned
         private static int nextSerialNum = 0;     private static ThreadLocal serialNum = new ThreadLocal() {
             protected synchronized Object initialValue() {
                 return new Integer(nextSerialNum++);
             }
         };     public static int get() {
             return ((Integer) (serialNum.get())).intValue();
         }
     }
     每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。