ホームページ > Java > &#&チュートリアル > 「Thread.wait()」が「IllegalMonitorStateException」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

「Thread.wait()」が「IllegalMonitorStateException」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-07 05:43:19
オリジナル
777 人が閲覧しました

Why Does `Thread.wait()` Throw `IllegalMonitorStateException`, and How Can I Fix It?

wait() と IllegalMonitorStateException によるスレッド同期

Java でマルチスレッドを実装すると、java.lang.IllegalMonitorStateException 例外が発生する可能性があります。 Thread.wait() を使用する場合。この問題は、スレッドが待機するオブジェクトのロックを最初に取得せずに wait() を呼び出そうとした場合に発生します。

この状況を修正し、適切なスレッド同期を確保するには、wait() 呼び出しを囲む必要があります。待機するオブジェクトのコードの同期ブロック内:

synchronized (object) {
    object.wait();
}
ログイン後にコピー

このブロックでは、現在のスレッドが指定されたオブジェクトのロックを取得します。 (オブジェクト) を使用して、IllegalMonitorStateException をスローせずに通知されるまで待機できるようにします。

別の解決策は、スレッド管理に対するより安全でユーザーフレンドリーなアプローチを提供する Java の同時実行パッケージを利用することです。同期とパフォーマンスを向上させるには、ConcurrentHashMap クラスまたは Lock インターフェイスの利用を検討してください。

以上が「Thread.wait()」が「IllegalMonitorStateException」をスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート