Sobes.tech
Junior — Middle
140

Μπορείτε να χρησιμοποιήσετε τη μέθοδο wait() σε ένα αντικείμενο χωρίς να διατηρείτε το synchronized lock;

Εταιρείες όπου ρωτήθηκαν
OZONOZON

Απάντηση από AI

sobes.tech AI

Нет, метод wait() у объекта в Java можно вызывать только если текущий поток владеет монитором этого объекта, то есть находится внутри блока synchronized, синхронизированного на этом объекте. Если вызвать wait() без удержания блокировки, будет выброшено IllegalMonitorStateException.

Пример правильного использования:

synchronized(obj) {
    obj.wait();
}

Это связано с тем, что wait() освобождает монитор и переводит поток в состояние ожидания, а для корректной работы монитор должен быть захвачен.