在多线程中,当每个线程都需要有自己独有的一份数据存储的时候 我们就可以用到ThreadLocal ,当使用ThreadLocal 来存储每个线程变量值的时候 各个线程对自己变量的修改对其他线程是互不影响的,举个栗子 有A、B、C三个线程 初始化的时候count值都为1 现A线程将count改为了5,B、C线程的值都是不受影响的还是1 ;
private static final ThreadLocal<Integer> count = ThreadLocal.withInitial(()->new Integer(1));
public static void main(String[] args) {
//ThreadLocal用法测试 每个线程独有 一个线程对其变量修改 并不影响其他线程存储的值
new Thread(() ->{
count.set(5);
System.out.println(Thread.currentThread().getName()+":"+count.get());
},"A").start();
new Thread(() -> {
System.out.println(Thread.currentThread().getName()+":"+count.get());
},"B").start();
new Thread(() -> {
System.out.println(Thread.currentThread().getName()+":"+count.get());
},"C").start();
}
输出结果:A:5 B:1 C:1 是这样吧 当遇到每个线程需要存储自己的一份值的时候可以考虑使用ThreadLocal 。