如果希望一个线程一直工作到另一个线程死亡,可以使用join()方法将该线程连接到另一个线程的末尾。例如,您希望线程B只在线程A完成其工作之前工作,然后您希望线程B加入线程A。
package org.nhooo.example.lang;
public class ThreadJoin implements Runnable {
private int numberOfLoop;
private ThreadJoin(int numberOfLoop) {
this.numberOfLoop = numberOfLoop;
}
public void run() {
System.out.println("[" +
Thread.currentThread().getName() + "] - Running.");
for (int i = 0; i < this.numberOfLoop; i++) {
System.out.println("[" +
Thread.currentThread().getName() + "] " + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("[" +
Thread.currentThread().getName() + "] - Done.");
}
public static void main(String[] args) {
Thread t1 = new Thread(new ThreadJoin(10), "FirstThread");
Thread t2 = new Thread(new ThreadJoin(20), "SecondThread");
try {
// 启动t1并等待该线程死亡
// 启动t2线程。
t1.start();
t1.join();
// 从t2开始
t2.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}