klocwork Проблема JD.LOCK.WAIT сообщается при вызове метода Object.wait(), когда метод удерживает две или более блокировки.Почему метод 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;
}
}
Если я изменил параметр синхронизированного метода от блокировки объекта до команды byte [] (например), мне не нужно беспокоиться о тупике? – 500004dolkong
Я не понимаю, как это поможет. Есть два замка (объект 'this' и объект' lock'), вы хотите приобрести их вместе и освободить их вместе. – rocketboy
Я вижу. большое спасибо. – 500004dolkong