wait()
方法的调用。
由于调用 wait()
只释放目标上的一个锁,因此持有两个锁时的等待很容易导致死锁。
示例:
synchronized (lockA) {
synchronized (lockB) {
lockB.wait(); //警告
//线程 A 卡在这里,持有 lockA
}
}
synchronized (lockA) { //线程 B 无法进入此块和释放线程 A
lockB.notify();
}