我需要修改JVM上不同线程上的缓存项,所以我需要确保所有项都按顺序安全地修改。所以我认为这将是好的,如果线程创建或获取锁与缓存键,并在工作完成后释放它。像这样:
if(this.igniteCache.lock(k).tryLock()){
try {
if(this.igniteCache.containsKey(k)){
List value=this.igniteCache.get(k);
value.addAll(v);
this.igniteCache.put(k, value);
}
} finally{
this.igniteCache.lock(k).unlock();
}
}
所以我的问题是:它是明智的创建淤泥锁项目?在内存或网络方面是否有显著的成本?
或者如果有其他的方法,你能告诉我吗?
Thx
这是PESSIMISTIC
/REPEATABLE_READ
事务的典型用例。可参考《点燃法》中CacheTransactionExample
[1](参见deposit()
法)。
请参阅[2]了解有关Ignite中事务支持的更多信息。
[1] https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheTransactionExample.java[2] https://apacheignite.readme.io/docs/transactions