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线程才继续执行
*/
线程插队
最新推荐文章于 2023-08-21 08:15:00 发布