java - Java中有线程组局部变量吗?

标签 java multithreading

我正在寻找一个类似于 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/

相关文章:

Java 如何使用 Timer 制作小游戏

inputText中的java代码

java - 如何检查字符串是否为回文?

java - 每次我想运行或不运行时都创建线程的新实例

Java 详细 GC 日志配置 - 未创建文件

java - 针对客户和员工的 Spring Security 用户身份验证

python - 在线程中使用 exec(compile()) 导入问题

c# - 如何使两个SQL查询真正异步

java - 在检查 ConcurrentHashMap 中是否存在 key 时,是否需要客户端锁定?

c++ - C++ 队列中的 pop 和访问是线程安全的