用Java连接线程
java.lang.Thread类提供了一种方法join(),该方法可用于其重载版本以达到以下目的。
join()-当前线程在第二个线程上调用此方法,导致当前线程阻塞直到第二个线程终止。
join(longmillisec)-当前线程在第二个线程上调用此方法,导致当前线程阻塞,直到第二个线程终止或经过指定的毫秒数。
join(longmillisec,intnanos)-当前线程在第二个线程上调用此方法,导致当前线程阻塞,直到第二个线程终止或经过指定的毫秒+纳秒数为止。
请参见下面的示例演示该概念。
示例
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.