- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在这里搜索过这个错误,但我认为我的代码片段看起来是正确的:
这是代码的摘录,如果我尝试运行代码,我会得到 java.lang.IllegalMonitorStateException:当前线程不是所有者。错误在 cond.wait() 方法中。
public void takeARest() {
lock.lock();
try {
while (disembark < totalPassengers) {
System.err.printf("Held by %s%n",lock.isHeldByCurrentThread());
cond.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
有什么想法吗?
最佳答案
为此,您需要 Condition.await()
。
Object.wait()
是一种不同的方法,需要保持对象的监视器(synchornized(cond){}
在调用周围)
所以:
public void takeARest() {
lock.lock();
try {
while (disembark < totalPassengers) {
System.err.printf("Held by %s%n",lock.isHeldByCurrentThread());
cond.await();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
关于Java 8 可重入锁和条件导致 IllegalMonitorStateException : current thread is not owner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60906373/
嗨,我已经阅读了 Java 中的 ReadWriteLock,但我不确定我是否掌握了它的重入部分。这是两个仅使用一个主线程来显示重入的简短代码示例 public class Locks { p
我在使用 NotifyIcons 时发现了一个重入问题。重现它真的很容易,只需在表单上放置一个 NotiftIcon,点击事件应该如下所示: private bool reentrancyDetect
我正在尝试使用 SQLite 的新 C 接口(interface)预更新 Hook : https://www.sqlite.org/c3ref/preupdate_count.html 现在回答我的
来自阅读here我发现 Actor 是可重入的,并且我希望以下情况成立:如果我有单一类型的转换 ThespianType 但有三个特定的 Actor ThespianType (T1、T2 和 T3)
有人可以向我解释一下 BlockReentrancy 的目的是什么吗?方法在ObservableCollection ? MSDN显示以下内容作为示例: //The typical usage is
我是一名优秀的程序员,十分优秀!