Junior — Middle
Μπορεί να χρησιμοποιηθεί η μέθοδος notify σε ένα αντικείμενο Object χωρίς να κατέχει το κλείδωμα synchronized;
sobes.tech AI
Απάντηση από AI
Нет, метод notify() у объекта Object нельзя вызывать без владения монитором (блокировкой) этого объекта, то есть без использования synchronized. Если вызвать notify() вне synchronized-блока, будет выброшено исключение IllegalMonitorStateException.
Пример правильного использования:
synchronized(obj) {
obj.notify();
}
Это связано с тем, что notify() уведомляет один из потоков, ожидающих на мониторе объекта, и для корректной работы требуется владение этим монитором.