有没有办法迭代或复制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(扩展)
  • 只要设置了值,就保留(staticMap线程和值

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

  • 呼叫 Thread.getThreads()
  • 调用yourThreadLocal.getMap(thread)(针对上述每个线程)
  • 呼叫 map.getEntry(yourThreadLocal)

第一是更优选的。

以上是 有没有办法迭代或复制Java ThreadLocal的所有值? 的全部内容, 来源链接: utcz.com/qa/407024.html

回到顶部