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.