线程礼让是指当满足某些条件时,可以将当前的调度让给其他线程执行,自己在等待下次调度执行,方法定义如下:
线程礼让:public static void yield()
范例:线程礼让
public class ThreadDemo318 {
public static void main(String[] args) throws InterruptedException {
Thread thread=new Thread(()->{
for (int i = 0; i < 100; i++) {
if(i%3==0) { //强制执行条件
Thread.yield(); //线程礼让
System.out.println("【yield】线程礼让,"+Thread.currentThread().getName());
}
try {
Thread.sleep(100); //延缓执行
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"执行、x="+i);
}
},"玩耍的线程") ;
thread.start();
for (int i = 0; i < 100; i++) { //主线程
Thread.sleep(100);
System.out.println("【霸道的main线程】number="+i);
}
}
}
执行结果
【yield】线程礼让,玩耍的线程
【霸道的main线程】number=0
玩耍的线程执行、x=0
【霸道的main线程】number=1
玩耍的线程执行、x=1
玩耍的线程执行、x=2
【yield】线程礼让,玩耍的线程
【霸道的main线程】number=2
玩耍的线程执行、x=3
【霸道的main线程】number=3
玩耍的线程执行、x=4
【霸道的main线程】number=4
【霸道的main线程】number=5
玩耍的线程执行、x=5
【yield】线程礼让,玩耍的线程
【霸道的main线程】number=6
玩耍的线程执行、x=6
在多线程正常执行中,原本的线程应该交替执行,但是由于礼让的关系,会出现某一个线程暂时让出调度资源的情况,让其他线程优先调度