PS:
关于多线程共享变量ThreadLocal<T>
变量值的共享可以使用public static 变量的形式,所有的线程都可以使用同一个public static变量。如果想实现每一个线程都有自己的共享变量,如何实现?
JDK中提供了类ThreadLocal<T>可以解决这样的问题。
原理:
ThreadLocal所属包java.lang.ThreadLocal<T> 是个泛型class
ThreadLocal为解决多线程并发问题提供了新的思路,使用这个类库可以简洁的实现多线程程序,
当使用ThreadLocal维护变量时,ThreadLocal为每一个使用该变量的线程提供独立的变量副本,所以没一个线程都可以改变自己的副本,而不会影响到其他线程对于的变量副本。
从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。
ThreadLocal为每一个线程维护变量的副本的原理:在ThreadLocal类中有一个Map集合,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,查看ThreadLocal的源码可以看到
其开放的方法主要有: