你好,请问在Java中yield()方法该怎么使用呢?

import java.lang.Thread;
//让出CPU,给其他进程执行机会
public class ThreadTest6_Yield{
public static void main(String[] args){
MyThread3 t1 = new MyThread3("A-----");
MyThread3 t2 = new MyThread3("B=====");
t1.start();
t2.start();
}
}

class MyThread3 extends Thread {
MyThread3(String s){
super(s);
}
public void run(){
for(int i=1;i<=100;i++){
System.out.println(getName()+" : "+i);
if(i%10==0)
yield();
}
}
}

这段代码运行的结果为什么不是10个A和10个B交叉输出呢?

慕娘9325324
浏览 162回答 2
2回答

慕丝7291255

Thread.yield( )方法:使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程了。

慕的地8271018

你好,线程调度是有操作系统控制的,不是轮询的,可以加入线程优先级控制
打开App,查看更多内容
随时随地看视频慕课网APP