ThreadLocal tl1 = new ThreadLocal() 的意思是定义一个变量,以后每个线程都可以用该变量 set, get自己线程里面的数据,其目的是为了保证变量在各个线程命名一致性 ,即通过 tl1.set(), tl1.get() 就可以看成每个好像各自单独定义了一个变量 tl1,各个线程互不影响。
其实现机制为:
ThreadLocal tl1 = new ThreadLocal()
定义了一个变量 tl1, 注意 tl1 在各线程里面是同一个对象,该处主要目的是定义一个变量名。
thread.run (
threadLocal.set("abc")
)
该代码可看成: 线程 thread 设置变量 threadLocal 的值为 "abc" ,将其存入thread的 threadLocals (即ThreadLocalMap )中 。 同理其他线程一样,如:线程 thread2 设置变量 tl1 的值为 "abc"
伪代码可以看成:
thread.setThreadLocals( ThreadLocalMap(tl1, "abc"))
具体分析如下图所示: