如果我的值存储在线程安全映射中,该值是否需要是 ThreadLocal?
If my value is stored in a Thread Safe map does the value need to be ThreadLocal?
我将对象存储在 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 中的任何对象没有通过其他方式无意中传递给其他线程,这些对象就不需要任何额外的保护。
我将对象存储在 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 中的任何对象没有通过其他方式无意中传递给其他线程,这些对象就不需要任何额外的保护。