目前,据我所知,与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)时,您的锁是
自动垃圾收集。这更简单,更快和更清洁。