синхронизированный объект не заблокирован потоком перед notifyAll ()
Я хочу иметь логическое значение для уведомления некоторых разделов системы о запуске определенной службы.
По какой-то странной причине яЯ получаю ошибку.java.lang.IllegalMonitorStateException: object not locked by thread before notifyAll()
Что странно, так это то, что notifyAll () находится внутри синхронизированного блока, который контролирует объект, для которого я вызываю notifyAll ().
Мой класс начинается так: я
public class MyService {
public static Boolean notifier = Boolean.valueOf(false);
@Override
public void start() {
synchronized (MyService.notifier) {
MyService.notifier = Boolean.valueOf(true);
MyService.notifier.notifyAll();
}
}
@Override
public void stop() {
synchronized (MyService.notifier) {
MyService.notifier = Boolean.valueOf(false);
MyService.notifier.notifyAll();
}
}
...
}
Я работаю над приложением для Android. Я неЯ думаю, это должно на что-то повлиять, но яЯ дополняю вопрос этим комментарием на случай, если это повлияет на работу Java.
Почему я получаю исключение, если объект заблокирован внутри синхронизированного блока?