yield是屈服和放弃的意思。在Java中,它引申使用,意思是让步给后面的线程,它重新排队,处于就绪状态。
yield方法不会产生任何异常,它的使用方法如下:
class demoThread extends Thread{ //线程类demoThread
public void run(){ //覆盖run方法
for(int i=1;i<10;i++){ //输出1到9数字
System.out.print(i);
yield(); //每输出完一个数字之后,就把线程处于重新就绪的状态,让位给下个线程
}
}
}
public class testYield{
public static void main(String[] args){
/*创建2个线程实例*/
demoThread d1 = new demoThread();
demoThread d2 = new demoThread();
/*启动两个线程实例*/
d1.start();
d2.start();
}
}
编译执行,结果如下
可见,两个线程实现了交替输出的效果。
如果把yield方法这句删除掉呢?试一下,结果如下:
一旦没有yield语句,则两个线程的执行顺序就不一定是交替的了,可能会打乱,就有点随机的效果了。
需要注意的是,yield方法所能让步的线程只有是与其相同优先级的,或者优先级比它高的,否则yield方法无效。