java - 将线程安全对象放在 ThreadLocal 上有什么好处吗?

标签 java concurrency thread-local

我最近看到一段代码,它使用了一个ThreadLocal 对象并在其中保存了一个ConcurrentHashMap

这有什么逻辑/好处,还是多余的?

最佳答案

如果对并发散列图的唯一引用驻留在ThreadLocal中,则散列图显然仅从单个线程引用。在这种情况下,我会说它是完全多余的。

然而,不难想象有人与其他线程“共享”线程本地存储的 HashMap :

ThreadLocal<ConcurrentHashMap<String, String>> tl = ...

// ...

final ConcurrentHashMap<String, String> props = tl.get();

EventQueue.invokeLater(new Runnable() {
    public void run() {
        props.add(key.getText(), val.getText());
    }
});

关于java - 将线程安全对象放在 ThreadLocal 上有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482544/

相关文章:

java - 如何管理 Android 应用程序和 Web 服务之间通信期间的连接丢失?

c++ - 创建的线程多于预期

java - 未在构建项目中导出映射器文件 (*.xml)。使用mybatis

java - 静态和动态数据结构之间的差异

swift - 标准 Swift 数学函数中的运算次数

java - CompletableFuture 的奇怪行为

c++ - 从 C++ 传输错误字符串 => C 包装的 API(多线程)

c++ - 线程本地存储构造函数 g++

c# - CallContext.LogicalGetData() 与 ThreadLocal/ThreadStatic

java - spring如何使用一个web环境进行多个测试