亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在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
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號