目前,据我所知,与ILock不同,使用IMap#tryLock后无需使用任何销毁方法。

将所有从HazelcastInstance检索到的ILock更改为IMap,并使用类似于以下所示的代码,是好是坏做法?

public final T execute(){
    try{
        imapForLocking.tryLock(nonexistentInMapStringKey);
        return executeCodeUnrelatedToMap();
    }finally{
        imapForLocking.unlock(nonexistentInMapStringKey);
    }
}

最佳答案

在这里找到我的答案https://groups.google.com/forum/#!topic/hazelcast/9YFGh3xwe8I

hazelcast开发人员鼓励使用IMap代替ILock进行锁定


  是的,您必须调用destroy,因为所有ILock对象都保存在内存中。
  您还可以将分布式映射用于锁:
  
  IMap mapLocks = hazelcastInstance.getMap(“ mylocks”);
  mapLocks.lock(theKey);
  
  当您调用mapLocks.unlock(theKey)时,您的锁是
  自动垃圾收集。这更简单,更快和更清洁。

10-06 07:27