ThreadLocal维护变量

来源:5-4 线程不安全类与写法-1

yukun2017

2018-07-14

ThreadLocal维护变量,为每一个变量的线程提供一个变量副本,变量副本被更改的话,会产生脏数据么。


写回答

5回答

星星993

2018-08-02

我觉得ThreadLocal维护变量一般不会用于修改,因为他只是维护了一个共享变量的一个副本,即使做了相应的修改但是不会将修改的结果刷新回主内存,也就是说ThreadLocal对维护变量的修改没有任何意义

0
0

yukun2017

提问者

2018-07-15

明白了,谢谢。

0
0

Jimin

2018-07-15

不是的,threadLocal里存储的只有当前线程可获取到,修改也是修改当前线程里的值,因此当前线程每次从threadLocal里取得值都肯定是最新的,别的线程取不到也改不了

0
0

yukun2017

提问者

2018-07-15

意思是当前线程维护的变量副本如果更改了,就会写回主内存,之后再同步到所有其他线程的变量副本么。

0
0

Jimin

2018-07-14

你好,这个当然不会,每一个线程里的变量准确的说都是内存里变量的副本,而通过threadlocal维护的变量副本,可以保证只有当前线程可读到可更改,因此任何操作对当前线程而言都是同步可见的,不会有脏数据一说。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程