Objeto sincronizado não bloqueado por thread antes de notifyAll ()

Eu quero ter um booleano para notificar algumas seções do sistema que um serviço específico iniciado.

Por alguma estranha razão estou recebendo o errojava.lang.IllegalMonitorStateException: object not locked by thread before notifyAll().

O que é estranho é que notifyAll () está dentro de um bloco sincronizado que assume o controle sobre o objeto que eu chamo de notifyAll ().

Minha aula começa assim:

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();
        }
    }
    ...
}

Eu estou trabalhando em uma aplicação android. Eu não acho que deveria afetar nada, mas estou complementando a questão com esse comentário caso isso afete a maneira como o java funciona.

Por que estou recebendo a exceção se o objeto estiver bloqueado dentro de um bloco sincronizado?

questionAnswers(1)

yourAnswerToTheQuestion