- ベストアンサー
javaのwaitしてるスレッドをnotifyで起こすことが出来ない
JDK1.5 WindowsXPです。 現在マルチスレッドを試しています。 A、B、C三つのスレッドがあります。 AはBというスレッドを作るメインスレッドです。 Bは、waitするスレッドです。 public final void run(){ while (true){ try { //notifyが来るまで待機 waitForNotify(); //実際の処理 act(); //スレッド停止させるための割り込み例外 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } //割り込み受信の場合強制終了する if (Thread.currentThread().isInterrupted()) { break; } } } こんな感じです。 そしてCのスレッドがnotify()を実行します。 しかしnotify()を実行してもスレッドは起きません。 Bに、 public synchronized void notifyM() throws InterruptedException{ wait(); } のようなメソッドを追加して、スレッドのインスタンスメソッドとして実行しても起きません。 notify()がJavaDOCなどを読んでも意味不明なため、 どのような使い方なら動くのか見当がつきませんので質問しました。 notify(スレッドB)みたいなら分かりいいんですが。
- みんなの回答 (2)
- 専門家の回答
お礼
標準使用方法を教えていただいて、ありがとうございます。 無事に動きました。