zjf*_*fdu 5 java multithreading
我想访问另一个线程中的线程局部变量。
例如
我有线程 1 的线程对象 A,
它有一个局部变量 L1。
并且我有另一个线程 Thread-2,如何访问 Thread-2 中的 L1?谢谢
不,因为内存可见性。所有 ThreadLocal 基础结构都假设对 threadlocal 对象的访问是线程限制的。如果另一个线程篡改了 threadLocal 对象的内容,则没有内存屏障让原始所有者线程知道它需要更新该对象的缓存版本,并且 JIT 不知道在何时考虑其他线程的修改推理哪些指令可以重新排序;如果您更新它,原始线程可能仍然看到过时的版本,没有任何线索发生了更改。
这是对 yshavit 的观察的补充,即篡改第三方库的内部结构通常是一个坏主意。
归档时间: |
|
查看次数: |
609 次 |
最近记录: |