是否可能因为 wait(timeout)
已超过超时时间而在 notifyAll()
上获得 java.lang.IllegalMonitorStateException
?
如果不是,那么当超时时间过后发生 notifyAll()
时会发生什么?
notifyAll()
和 wait(timeout)
都被阻塞在同一锁定对象上的同步块(synchronized block)内。
synchronized(lockObj) {
lockObj.notifyAll();
}
还有:
synchronized(lockObj) {
lockObj.wait(timeout);
}
最佳答案
不,您不会因此而获得异常(exception)。如果您在没有任何等待的情况下调用 notifyAll
,则基本上不会发生任何事情。这不是错误情况。
关于超时时出现 java.lang.IllegalMonitorStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29367449/