微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法迭代或复制Java ThreadLocal的所有值?

如何解决有没有办法迭代或复制Java ThreadLocal的所有值?

一种方法是手动处理此问题:

  • 使用包装ThreadLocal(扩展)
  • 只要设置了值,就保留(staticMap线程和值

或者,通过一些反射(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 举报,一经查实,本站将立刻删除。