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

回到顶部