【发布时间】:2010-05-08 20:06:55
【问题描述】:
上下文:
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...]
}
【问题讨论】:
-
也许一个更有趣的问题是你为什么要这样做?
-
好吧,不管好坏,这个想法是有一种方法可以收集多个线程中的更改列表,然后每隔一段时间执行所有更改。它看起来像是一种避免真正需要的同步的自然方法,因为更改仅针对特定线程进行排序。
-
查看my answer 相关问题;如果您需要访问
ThreadLocal中的所有值,则根本不需要ThreadLocal。通常,您需要ConcurrentHashMap<Thread, MyType>。 -
@dimo414 是的,这就是我在其他地方评论时所采用的。与 ThreadLocal 解决方案在保留行为方面的工作方式相比,为了获得更好的“保真度”,我想可以改用 WeakHashMap
的同步变体。 -
当然,或者
Cache。
标签: java multithreading thread-local