有没有办法迭代或复制Java ThreadLocal的所有值?
内容:
static ThreadLocal<MyType> threadLocalMyType = ...
我想说的是:
for (ThreadLocalEntry e: threadLocalMyType.getMapLikeThing() { // Thread t = e.getKey();
// I don't need the thread value right now, but it might be useful for
// something else.
MyType theMyType = e.getValue();
// [...do something with theMyType...]
}
回答:
一种方法是手动处理此问题:
- 使用包装
ThreadLocal
(扩展) - 只要设置了值,就保留(
static
)Map
线程和值
或者,通过一些反射(getDeclaredMethod()
和setAccessible(true)
),您可以:
- 呼叫
Thread.getThreads()
- 调用
yourThreadLocal.getMap(thread)
(针对上述每个线程) - 呼叫
map.getEntry(yourThreadLocal)
第一是更优选的。
以上是 有没有办法迭代或复制Java ThreadLocal的所有值? 的全部内容, 来源链接: utcz.com/qa/407024.html