ホームページ >Java >&#&チュートリアル >「Thread.wait()」が「IllegalMonitorStateException」をスローする理由と修正方法
Thread.wait() 呼び出し中の IllegalMonitorStateException の解決
Java では、マルチスレッドはアプリケーションのパフォーマンスを向上させる強力な手法です。ただし、同期が不適切だと実行時エラーが発生する可能性があり、その 1 つが恐ろしい IllegalMonitorStateException です。この例外は、スレッドが適切なモニター ロックを保持せずに Thread.wait() を呼び出そうとしたときに発生します。
このシナリオで IllegalMonitorStateException を解決するには、オブジェクトの同期ブロック内にいることを確認することが重要です。あなたはそれを待つつもりです。これは、Thread.wait() を呼び出すスレッドが最初にその特定のオブジェクトのモニター ロックを取得する必要があることを意味します。
Java には、次のようなロックを取得するいくつかの方法が用意されています。
同期ブロックの適切な使用を示す例を次に示します。
// Assuming we have an object "myObject" on which we want to wait synchronized (myObject) { myObject.wait(); }
注: ベスト プラクティスとして、Java が提供する同時実行パッケージを調べることを検討してください。これらは、古いスレッド パッケージと比較して安全性が向上し、同時実行の実装を簡素化します。
以上が「Thread.wait()」が「IllegalMonitorStateException」をスローする理由と修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。