特定のサービスが開始されたことをシステムのいくつかのセクションに通知するブール値が必要です。
奇妙な理由で、エラーが発生しています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();
}
}
...
}
私はアンドロイドアプリケーションに取り組んでいます。何にも影響を与えるべきではないと思いますが、Javaの動作に影響を与える場合に備えて、そのコメントで質問を補足しています。
オブジェクトが同期ブロック内でロックされている場合、例外が発生するのはなぜですか?