等待線程
主線程:啓動線程
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
主線程:中斷線程
主線程:退出
Thread-0:線程被中斷。
Thread-0:取得中斷信號狀態:false
Thread-0:線程退出。
可以看到主線程在其他線程仍然運行的情況下就完成了,如果要求主線程必須等其他線程完成後才能結束該怎麼實現?也就是說主線程要等待其他線程完成,線程等待可以使用join方法,修改後實例如下:
public class JoinWorkThread {
public static void main(String[] args){
JoinWorker worker = new JoinWorker();
Thread t1 = new Thread(worker);
Thread t2 = new Thread(worker);
System.out.println("main:開始啓動工作線程");
t1.start();
t2.start();
System.out.println("main:已經啓動所有工作線程");
System.out.println("main:等待工作線程");
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main:退出");
}
}
class JoinWorker implements Runnable{
@Override
public void run(){
for(int i=0; i<1000; i++){
if(i%100 == 0){
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
}
運行日誌如下:
main:開始啓動工作線程
Thread-0:0
Thread-0:100
Thread-0:200
Thread-0:300
Thread-0:400
Thread-0:500
Thread-0:600
Thread-0:700
Thread-0:800
Thread-0:900
main:已經啓動所有工作線程
main:等待工作線程
Thread-1:0
Thread-1:100
Thread-1:200
Thread-1:300
Thread-1:400
Thread-1:500
Thread-1:600
Thread-1:700
Thread-1:800
Thread-1:900
main:退出