ThreadLocal的作用
作用是为每个线程保存线程私有数据。可以把ThreadLocal理解为一个Map,其中key为当前线程,value为要存储的数据。
下面是摘自《Java编程思想》中的一段示例代码:
public class ThreadLocalTest {
public static void main(String[] args) throws Exception{
ExecutorService executorService = Executors.newCachedThreadPool();
for(int i = 0;i < 5;i ++) {
executorService.execute(new Task(i));
}
TimeUnit.SECONDS.sleep(3);
executorService.shutdownNow();
}
}
class ThreadLocalVariableHolder {
//将ThreadLocal定义成一个全局共享变量
private static ThreadLocal<Integer> value = new ThreadLocal<Integer>(){
private Random random = new Random();
//随机给定一个初始化值
@Override
protected synchronized Integer initialValue() {
return random.nextInt(10000);
}
};
//通过set设置与当前线程绑定的数据
public static void increment(){
value.set(value.