如何使用淡褐色锁

时间:2015-10-01 16:29:12

标签: locking hazelcast

我必须将使用旧版本的hazelcast的应用升级到其中一个较新版本。有一些淡褐色锁定功能已被弃用并从API中完全删除。特别是,旧的锁功能如下:

Hazecast.getLock(myString);

getLock函数是Hazelcast上的静态方法。现在它将被替换为:

hazelcastInstance.getLock(myString);

...锁来自群集中的一个实例。

我的问题是,我可以使用hazelcast群集中的任何一个实例获取锁定吗?如果是这样,这会锁定所有实例吗?

1 个答案:

答案 0 :(得分:4)

Q1:是的,您可以使用hazelcast群集中的任何一个实例来获取锁定(ILock)。

您可以将hazelcast框架中的ILock视为java.util.concurrent.locks.Lock的分布式实施。有关详细信息,请参阅

http://docs.hazelcast.org/docs/3.5/javadoc/com/hazelcast/core/ILock.html

Q2:如果使用ILock锁定临界区,则保证临界区在给定时间点仅由整个群集中的一个线程执行。因此,一旦节点中的lock()调用Thread1方法,其他线程(也在其他节点中)将等待锁定被释放。

示例代码:

HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
Lock testLock = hazelcastInstance.getLock( "testLock" );
testLock.lock();
try 
{
   // critical section code.
} 
finally 
{
   testLock.unlock();
}