如何解决有没有办法迭代或复制Java ThreadLocal的所有值?
一种方法是手动处理此问题:
- 使用包装
ThreadLocal
(扩展) - 只要设置了值,就保留(
static
)Map
线程和值
或者,通过一些反射(getDeclaredMethod()
和setAccessible(true)
),您可以:
- 呼叫
Thread.getThreads()
- 调用
yourThreadLocal.getMap(thread)
(针对上述每个线程) - 呼叫
map.getEntry(yourThreadLocal)
第一是更优选的。
解决方法
内容:
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...]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。