我将对象存储在 ThreadLocal
Map
中(在 spring-tx 中实现)
class TransactionSynchronizationManager ...
private static final ThreadLocal<Map<Object, Object>> resources =
new NamedThreadLocal<Map<Object, Object>>("Transactional resources");
如果映射是ThreadLocal
并且正确访问(同样是所有spring-tx代码),我存储在映射中的值是否必须是ThreadLocal才能保证线程安全?
最佳答案
假设您没有通过其他方式无意中将 Map 传递给另一个线程,则 Map 不需要任何额外的保护,因为它的所有使用都将是单线程的。同样,只要Map中的任何对象没有通过其他方式无意中传递给其他线程,这些对象就不需要任何额外的保护。
关于java - 如果我的值存储在线程安全映射中,该值是否需要是 ThreadLocal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599719/