ThreadLocals很难使用

pmf*_*pmf 1 java concurrency thread-local

我正在使用ThreadLocal变量(通过Clojure的变量,但以下内容对于ThreadLocalJava中的普通变量是相同的)并且经常遇到这样的问题:我无法确定某个代码路径是在同一个线程上还是在另一个线程.对于我控制下的代码,这显然不是一个大问题,但对于多态第三方代码,有时甚至没有办法静态地确定是否可以安全地假设单线程执行.

我倾向于认为这是ThreadLocals 的固有问题,但我想听听一些如何以安全的方式使用它们的建议.

Jon*_*erg 9

然后不要使用ThreadLocals!它们专门用于何时需要与Thread关联的变量,就好像有一个Map<Thread,T>.