gpt4 book ai didi

java - Java中有互斥锁吗?

转载 作者:IT老高 更新时间:2023-10-28 11:23:32 25 4
gpt4 key购买 nike

在 java 中是否有 Mutex 对象或创建方法?我问是因为用 1 个许可初始化的信号量对象对我没有帮助。想想这个案例:

try {
semaphore.acquire();
//do stuff
semaphore.release();
} catch (Exception e) {
semaphore.release();
}

如果在第一次获取时发生异常,catch block 中的释放将增加许可,信号量不再是二进制信号量。

正确的方法是什么?

try {
semaphore.acquire();
//do stuff
} catch (Exception e) {
//exception stuff
} finally {
semaphore.release();
}

上面的代码会保证信号量是二进制的吗?

最佳答案

Java 中的任何对象都可以通过 synchronized block 用作锁。这也会在发生异常时自动处理释放锁。

Object someObject = ...;

synchronized (someObject) {
...
}

您可以在此处阅读更多信息:Intrinsic Locks and Synchronization

关于java - Java中有互斥锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com