Java中是否有Mutex?
Java中是否有Mutex对象或一种创建对象的方法?我问是因为用1许可初始化的Semaphore对象对我没有帮助。考虑这种情况:
try { semaphore.acquire();
//do stuff
semaphore.release();
} catch (Exception e) {
semaphore.release();
}
如果在第一次获取时发生异常,则catch块中的释放将增加许可,并且该信号量不再是二进制信号量。
正确的方法是吗?
try { semaphore.acquire();
//do stuff
} catch (Exception e) {
//exception stuff
} finally {
semaphore.release();
}
上面的代码是否可以确保信号量是二进制的?
回答:
看到此页面:http
:
//www.oracle.com/technetwork/articles/javase/index-140767.html
它有一个稍微不同的模式,这是(我认为)您要寻找的内容:
try {mutex.acquire();
try {
// do something
} finally {
mutex.release();
}
} catch(InterruptedException ie) {
// ...
}
在这种用法中,您仅release()
在成功呼叫之后acquire()
以上是 Java中是否有Mutex? 的全部内容, 来源链接: utcz.com/qa/408840.html