Apache Ignite:缓存项锁定用法

时间:2016-08-11 14:39:46

标签: thread-safety locking atomicity ignite

我需要在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();
            }

        }

所以我的问题是:创建muck锁定项目是否明智?内存或网络方面是否有任何重大成本?

或者,如果有其他方法,你可以指导我吗?

THX

1 个答案:

答案 0 :(得分:0)

这是PESSIMISTIC / REPEATABLE_READ交易的典型用例。您可以参考Ignite中包含的CacheTransactionExample [1](请参阅deposit()方法)。

有关Ignite中的事务支持的更多信息,另请参阅[2]。

[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