4

2 つのスレッド J1 と J2 があります。join()メソッドを使用せずに、J1 が実行を完了した後にのみスレッド J2 が実行されるようにするにはどうすればよいでしょうか。

4

3 に答える 3

1

これは、Thread.join が行っていることに非常に近いと思います。

public class Test1 {

    public static void main(String[] args) throws Exception {
        Thread t = new Thread();
        synchronized (t) {
            t.start();
            while (t.isAlive()) {
                t.wait();
            }
        }
    }
}

魔法に注意してください - 何かが t.wait() を起動します - これは、JVM が終了時に Thread オブジェクトに通知するためです

于 2013-05-12T15:43:03.280 に答える
0

これを達成する別の方法は、 ロックを使用することです

   class X {
         private final ReentrantLock lock = new ReentrantLock();
          // ...

         public void m() { 
           lock.lock();  // block until condition holds
           try {
              // ... method body
          } finally {
               lock.unlock()
          }
        }
   } 
于 2013-05-12T16:34:30.507 に答える