Java - ThreadLocal与ConcurrentHashMap

Bob*_*r02 5 java concurrency concurrenthashmap thread-local

关于ThreadLocal和之间的性能差异,我有一个非常简单的问题ConcurrentHashMap.在我的代码中的某些地方,我需要维护从a Thread到some 的映射Object,这必须是线程安全的.一种选择是使用ConcurrentHashMap,一种是使用ThreadLocal.这些方法的任何优点/缺点,主要是在速度方面?

jwa*_*ins 9

这绝对是ThreadLocal的一个例子.ThreadLocal值存储在Thread对象中,而不是存储在并发映射中,因此绝对不涉及锁定,因此效率更高.另请注意,当线程终止时,通过ThreadLocal附加到线程的值会自动丢弃,这在ConcurrentHashMap中不会发生.但最后一点是:如果您有某些方式"重用"的线程,例如保存在池中的工作线程,则必须在将线程返回到池之前清除ThreadLocal的值.