【发布时间】:2016-08-28 15:51:49
【问题描述】:
文档说 ehcache 是线程安全的。据我了解,如果thread A 更新缓存,这些更新将始终对其他线程可见。
但我想知道putAll 操作是否是线程安全和原子的?比如说,我想通过调用putAll 并传递带有实际值的Map 来更新我的缓存。
说,我想在更新缓存时从缓存中获取一些价值。我会收到旧值还是等到缓存更新并收到新值?
【问题讨论】:
-
线程安全和原子是两个不同的概念。原子操作必然是线程安全的,但线程安全并不要求给定的操作是原子的。只要构成较大操作的原子操作使缓存处于一致状态(例如,没有创建但未填充的条目),那么较大的操作可能被认为是线程安全的。基于以下内容:ehcache.org/apidocs/2.9/net/sf/ehcache/… 我推测 putall 不是原子的
标签: java multithreading ehcache