当调用 Object.wait() 方法而该方法持有两个或更多锁时,会报告 klocwork JD.LOCK.WAIT 问题。
klocwork 说,在持有两个锁的同时等待监视器可能会导致死锁,应该考虑到这个问题。
但我不明白为什么这会导致死锁。
谁能帮我理解这个问题?
以下代码来自 klockwork。JD.LOCK.WAIT 问题发生在第 14 行lock.wait();
。
String name;
synchronized void waitForCondition(Object lock) {
try {
synchronized(lock) {
name = "aa";
lock.wait(); //line 14
}
} catch (InterruptedException e) {
return;
}
}