Gli*_*ide 3 apache-zookeeper apache-curator
什么之间的区别InterProcessMutexVS InterProcessSemaphoreMutex?该文档说InterProcessSemaphoreMutex是一样的 InterProcessMutex,除了它不是折返。但我不知道可重入是什么意思。
我是 Apache Curator 的主要作者。无论文档可能会或可能不会说什么,为了记录,我都希望为两个类中的每一个提供确切的用例。
进程间互斥体
InterProcessMutex当您需要能够以可重入的方式锁定时应该使用。这意味着一个给定的线程一旦获得就被称为“拥有”锁,并且可以在需要时再次锁定它。如果线程将锁对象传递给其他不需要关心是否已获取锁的方法,这将非常有用。请注意,这也意味着只有拥有线程才能释放锁。下面是一个例子:
InterProcessMutex lock = new InterProcessMutex(...);
if ( !lock.acquire(...) ) ... // if acquire failed: throw, return, etc
try {
doWork(lock); // doWork() can safely call lock.acquire() again on the lock
} finally {
lock.release();
}
Run Code Online (Sandbox Code Playgroud)
一旦获取,如果在与用于获取锁的线程不同的线程中释放锁,IllegalMonitorStateException则会抛出该锁。
进程间信号量互斥
InterProcessSemaphoreMutex是一种宽松版本的锁,不会记录获取它的线程。它具有更简单的语义。每个 InterProcessSemaphoreMutex 实例只能被获取一次,并且必须通过释放(在任何线程中)进行平衡。IE
InterProcessSemaphoreMutex lock = new InterProcessSemaphoreMutex(...);
lock.acquire();
lock.acquire(); // this will block forever
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。如果文档需要澄清,我们将感谢带有改进的拉取请求。
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |