用Java连接线程

java.lang.Thread类提供了一种方法join(),该方法可用于其重载版本以达到以下目的。


  • join() -当前线程在第二个线程上调用此方法,导致当前线程阻塞直到第二个线程终止。

  • join(long millisec) -当前线程在第二个线程上调用此方法,导致当前线程阻塞,直到第二个线程终止或经过指定的毫秒数。

  • join(long millisec,int nanos) -当前线程在第二个线程上调用此方法,导致当前线程阻塞,直到第二个线程终止或经过指定的毫秒+纳秒数为止。

请参见下面的示例演示该概念。

示例

class CustomThread implements Runnable {
   public void run() {
      System.out.println(Thread.currentThread().getName() + " started.");
      try {
         Thread.sleep(500);
      } catch (InterruptedException e) {
         System.out.println(Thread.currentThread().getName() + " interrupted.");
      }
      System.out.println(Thread.currentThread().getName() + " exited.");
   }
}
public class Tester {
   public static void main(String args[]) throws InterruptedException {
      Thread t1 = new Thread( new CustomThread(), "Thread-1");
      t1.start();
      //主线程类在t1上的联接
      //一旦t1完成,那么只有t2可以开始
      t1.join();
      Thread t2 = new Thread( new CustomThread(), "Thread-2");
      t2.start();
      //主线程类在t2上的连接
      //一旦t2完成,那么只有t3可以开始
      t2.join();
      Thread t3 = new Thread( new CustomThread(), "Thread-3");
      t3.start();
   }
}

输出结果

Thread-1 started.
Thread-1 exited.
Thread-2 started.
Thread-2 exited.
Thread-3 started.
Thread-3 exited.