内容:

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的包装器(扩展它)
只要设置了值,就保持(staticMap的线程和值


或者,通过一些反射(getDeclaredMethod()setAccessible(true)),您可以:


致电Thread.getThreads()
调用yourThreadLocal.getMap(thread)(对于上述每个线程)
致电map.getEntry(yourThreadLocal)


第一是更优选的。

关于java - 有没有办法迭代或复制Java ThreadLocal的所有值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56404059/

10-13 05:00