我最近看到一段代码,它使用了一个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/