Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程。(可能没有效果)
yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。
结论:大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。
public class TestYield {
public static void main(String [] args){
MyThread t1 = new MyThread("t1");
MyThread t2 = new MyThread("t2");
t1.start();
t2.start();
}
}
class MyThread extends Thread{
MyThread(String s){
super(s);
}
public void run(){
for(int i = 0; i <= 30; i ++){
System.out.println(getName()+":"+i);
if(("t1").equals(getName())){
if(i == 0){
yield();
}
}
}
}
}
运行的结果是变化的。