gpt4 book ai didi

java - ReentrantLock 异常

转载 作者:行者123 更新时间:2023-11-30 11:58:23 25 4
gpt4 key购买 nike

我正在为 Android 2.2 开发,对 ReentrantLocks 的工作原理有点困惑。以下代码是否会抛出 IllegalMonitorStateException?我问是因为我看不出它是如何做到的——根据 API,当且仅当成功获得锁时,tryLock 返回 true——但 unlock() 命令偶尔会返回 true。

public void lockDemo() {
ReentrantLock myLock = new ReentrantLock();
if (myLock.tryLock()) {
System.out.println("Lock obtained");
myLock.unlock();
}
}

最佳答案

来自 javadoc:如果当前线程不持有锁,unlock() 将抛出 IllegalMonitorStateException。我猜你不会问,除非你看到这个,但是,你应该检查堆栈跟踪以查看触发它的方法。你给出的例子不会重现这种情况,所以你的真实代码一定更复杂,问题一定出在其他地方。

在我的脑海中,我可以想象这把锁实际上可能以某种方式被解锁了两次。或者在某些认为自己拥有锁的代码路径中实际上可能没有成功获取锁。

关于java - ReentrantLock 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3213360/

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