thread ---- join

public class TrainDemo1 {
    public static void main(String[] args){
        Gard g = new Gard();
        g.start();
        Train t1 = new Train(2000);
        Train t2 = new Train(8000);
        Train t3 = new Train(6000);
        t1.start();
        t2.start();
        t3.start();
        try { // start,join都是非阻塞的。如果没有join那么主线程不会等待子线程结束,它只管自己的执行顺序,执行时间,执行完一条紧跟
            t1.join();//下一条。
            t2.join();//如果有了join,那么主线程会监控子线程,讲他们的执行时间加入自己的时间,等到他们全部结束,然后主线程在执行它剩下的代码
            t3.join();//join期间,各个子线程并不是一个接一个的执行,而是依旧是各自执行各自的,所以,一般join的时候,主线程其实等待的是耗时最久的那个线程的执行时间
        }catch (InterruptedException e){

        }
        System.out.println("over");
    }
}


class Montain{

}
class Train extends Thread{
    private int time;
    public Train(int time){
        this.time = time;
    }
    public void run(){
        try{
            Thread.sleep(time);
        }catch (Exception e){

        }
    }
}




//守护线程
class Gard extends Thread{
    public Gard(){
        this.setDaemon(true);
    }
    public void run(){
        while(true) {
            try {
                System.out.println("di~~~da~~~~~");
                Thread.sleep(1000);
            } catch (Exception e) {

            }
        }
    }
}
原文地址:https://www.cnblogs.com/jijizhazha/p/7740163.html