将ThreadSafe对象放在ThreadLocal上有什么好处吗?

Ron*_*onK 6 java concurrency thread-local

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

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

aio*_*obe 7

如果对并发hashmap 的唯一引用位于其中ThreadLocal,则hashmap显然仅从单个线程引用.在这种情况下,我会说它完全是多余的.

但是,不难想象某人与其他线程"共享"线程本地存储的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());
    }
});
Run Code Online (Sandbox Code Playgroud)