使用以下代码对缓存中的元素进行更新。
Cache cache = manager.getCache("myCache");
cache.put(new Element("k1", "v1"));
//updates "k1"
cache.put(new Element("k1", "v2"));
这个线程是否安全,或者为了线程安全我们是否需要做任何事情。 此外,从性能角度来看,每次更新都会生成一个新元素。这是一个好方法吗?
此致
答案 0 :(得分:4)
这是更新缓存条目的基本API:对具有更新值的相同密钥执行put。
为此,您确实需要创建一个新的Element
。
关于线程安全性,Ehcache操作在设计上是线程安全的。
但我不确定您的上下文和线程安全要求是什么。
在您处理的任何时候,包括两次放置之间没有任何阻止另一个线程更新同一个键的内容。
如果您想保证第二个只更新密钥k1
,如果其值仍为v1
,那么您需要查看提供的Compare and Swap Operations或explicit locking