2022-01-22 10:56

ThreadLocal的应用

码自答

JavaEE

(987)

(0)

收藏

ThreadLocal是线程局部变量,是线程的私有变量,ThreadLocal提供静态属性与Thread关联。

例如:

ThreadLocalDemo类用来存放数据

image.png

线程:

ThreadDemo类是线程,将data数据保存到ThreadLocalDemo类中间

image.png

创建thread1和thread2线程对象,启动线程:

image.png

线程1和线程2对应的ThreadLocalDemo的静态属性count是同一个属性。


ThreadLocal就是用来解决类似问题,可以让两个线程具有本身私有的局部变量。

修改ThreadLocalDemo类代码如下:

image.png


程序运行结果:线程1和线程2的数据互不相关。

image.png


总结:

ThreadLocal为线程保存属于当前线程的局部数据。


原理:

在Thread线程中间有一个ThreadLocalMap,ThreadLocal来操作这个Map,存储数据

image.png


image.png



ThreadLocalMap是ThreadLocal的一个内部类:

image.png


比如:

我们每个人在某宝购物的时候,就是一个线程,我们的支付宝就是一个ThreadLocalMap,阿里巴巴就是ThreadLocal,阿里巴巴可以通过操作我们的支付宝,显示数据的存取



0条评论

点击登录参与评论