我正在寻找一个类似于 ThreadLocal 的类,它可以在线程组而不是线程上工作。
如果没有这样的类(在某些开源库中),您将如何实现它?有比在 WeakHashMap 中使用线程组更好的主意吗?
我正在使用全局、每线程和每线程组上下文中的各种参数实现一个在运行时可调的调试框架。作为一个非常简单的例子,你可以有一个报告声明:
debug.log( category, message);
并指定只有当服务于网络请求的线程组中的线程调用时,才会显示具有该特定类别的日志条目。
最佳答案
ThreadGroup
很少使用,所以没有平台支持。
使用 [ Weak
/Identity
/Concurrent
] HashMap<ThreadGroup,T>
如果不是很快的话,将只是工作。您真的希望 map 都是弱的、身份的和并发的,但是对于 Java 库,您目前只能选择一个。
要提高性能,请注意 Thread
s 不改变 ThreadGroup
.因此,使用 ThreadLocal
缓存值(覆盖 initialValue
)。 ThreadLocal
具有良好的性能(每个 get
有几十个周期)。
关于java - Java中有线程组局部变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2017155/