线程安全——Apache 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();
            }
        }

所以我的问题是:它是明智的创建淤泥锁项目?在内存或网络方面是否有显著的成本?

或者如果有其他的方法,你能告诉我吗?

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

相关内容

  • 没有找到相关文章

最新更新