为了账号安全,请及时绑定邮箱和手机立即绑定

在ArmyRunnable类中,为什么要加入Thread.yield()?我试了一下不加这句话,也可以满足要求,加与不加这句话的区别在哪?

在ArmyRunnable类中,为什么要加入Thread.yield()?我试了一下不加这句话,也可以满足要求,加与不加这句话的区别在哪?

正在回答

3 回答

如果不加yield 的话,那么需要当前线程执行完之后 才会开始下一线程, 加上之后 每次执行 都会重新分配线程资源, 多试几次应该就可以看出效果来了。

0 回复 有任何疑惑可以回复我~
package Thread;

public class ArmyRunnable implements Runnable {
	volatile boolean keepRunning=true;
	public void run() {
		while (keepRunning) {
			for (int i=1;i<=5;i++) {
				System.out.println(Thread.currentThread().getName()+"第["+i+"]次进攻对方");
				//Thread.yield();
			}
		}
		System.out.println(Thread.currentThread().getName()+"结束了战斗!");
	}
}

就是这段代码

0 回复 有任何疑惑可以回复我~

当 不使用 yield()方法时  优先权还在本线程 上 。使用yield方法后,优先权重新分配 也有可能再次回到本线程。 所以导致 有可能 用与不用 调试出的结果相同 ,所以 多试几次 没用yield方法的 必定每次结果相同 而调用yield方法的会有许多不同结果i

0 回复 有任何疑惑可以回复我~
#1

_菲菲菲菲 提问者

我试了一下,还是一样的,我就是用的慕课网JAVA深入浅出多线程里隋唐演义那个例子,线程先后循序还是随机的
2016-11-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在ArmyRunnable类中,为什么要加入Thread.yield()?我试了一下不加这句话,也可以满足要求,加与不加这句话的区别在哪?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号