package com.ajax;
//线程插队
public class Example06 {public static void main(String[] args)throws Exception{Thread t=new Thread(new EmergencyThread(),"线程一");t.start();for(int i=0;i<6;i++){System.out.println(Thread.currentThread().getName()+"输入:"+i);if(i==2){t.join();//调用join方法时,调用的线程将被阻塞join方法加入的线程执行完成后他才会继续运行}Thread.sleep(500);//线程休眠500ms}}
}
class EmergencyThread implements Runnable{public void run(){for(int i=0;i<6;i++){System.out.println(Thread.currentThread().getName()+"输入:"+i);try{Thread.sleep(500);}catch(InterruptedException e){e.printStackTrace();}}}
}
/*输出结果:
main输入:0
线程一输入:0
main输入:1
线程一输入:1
线程一输入:2
线程一输入:3
线程一输入:4
线程一输入:5
main输入:2
main输入:3
main输入:4
main输入:5
解释:main线程中开启了一个线程t,两个线程的循环体中都调用了Thread的sleep方法,以实现两个线程的交替执行。当线程中的循环变量为2时,调用t线程的join方法,这时候t线程就会
插队优先执行。从运行结果可以看出,当main线程输出2以后,线程一就开始执行,直到线程一执行完毕,main线程才继续执行*/