質問: スレッド1とスレッド2を交互に実行するには? スレッド1→スレッド2→スレッド1・・・と同期を取り合いながら交互にスレッドを動かしたいのですが、thread.getstate()を用いないで実現するよい方法はないでしょうか? どうしてもデッドロックが発生しうる方法しか思いつかず困っています。 例えば以下のプログラムで1212と交互に表示させたい場合です。 以下のプログラムは当然デッドロックになりますが、やりたいことを伝えるために載せておきます。 object obj; //スレッド間通信用のobject class test1 extends thread { public void run() { while(true) { system.out.print("1"); synchronized (obj) { obj.notify();//相手をnotifyして obj.wait();//自分はwait } } } } class test2 extends thread { public void run() { while(true) { system.out.print("2"); synchronized (obj) { obj.notify(); obj.wait(); } } } } new test1().start(); new test2().start();
回答: スレッド1・2を監視するスレッド3を作って3が1・2を交互に呼ぶ じゃだめ?