ホームページ >Java >&#&チュートリアル >「Thread.wait()」が「IllegalMonitorStateException」をスローするのはなぜですか?それを修正するにはどうすればよいですか?
wait() と IllegalMonitorStateException によるスレッド同期
Java でマルチスレッドを実装すると、java.lang.IllegalMonitorStateException 例外が発生する可能性があります。 Thread.wait() を使用する場合。この問題は、スレッドが待機するオブジェクトのロックを最初に取得せずに wait() を呼び出そうとした場合に発生します。
この状況を修正し、適切なスレッド同期を確保するには、wait() 呼び出しを囲む必要があります。待機するオブジェクトのコードの同期ブロック内:
synchronized (object) { object.wait(); }
このブロックでは、現在のスレッドが指定されたオブジェクトのロックを取得します。 (オブジェクト) を使用して、IllegalMonitorStateException をスローせずに通知されるまで待機できるようにします。
別の解決策は、スレッド管理に対するより安全でユーザーフレンドリーなアプローチを提供する Java の同時実行パッケージを利用することです。同期とパフォーマンスを向上させるには、ConcurrentHashMap クラスまたは Lock インターフェイスの利用を検討してください。
以上が「Thread.wait()」が「IllegalMonitorStateException」をスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。