一:TreadLocal基本概念
ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。
如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是ThreadLocal变量名的由来。他们可以使用 get() 和 set() 方法来获取默认值或将其值更改为当前线程所存的副本的值,从而避免了线程安全问题。
总结为:一互不影响,二变量在线程之间隔离。
二:ThreadLocal示例
// 测试ThreadLocal是否能够保证同步
private static ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(()->1);
public static void main(String[] args){
for (int i = 0; i < 10 ; i++) {
int finalI = i;
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"--开始->"+threadLocal.get().toString());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
threadLocal.set(new Integer(finalI