1.3.线程基础_等待线程

等待线程

有时候我们需要等待其他线程完成后当前线程才可以继续执行。回顾之前的示例可以看到主线程和其他线程是并发运行的,回顾一下1.2中程序执行的日志:
主线程:启动线程
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:退出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章