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) {
}
}
}
}