最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

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

我自己試驗了下,如果sleep時間過短,會導(dǎo)致join后還是被插隊。求解!

package?thread;

/**
?*?軍演舞臺
?*/
public?class?Stage?extends?Thread{
	
	@Override
	public?void?run()?{
		//創(chuàng)建紅藍方攻擊的實例
		ArmyRunnable?redAttack0?=?new?ArmyRunnable();
		ArmyRunnable?blueAttack0?=?new?ArmyRunnable();
		//創(chuàng)建線程
		Thread?redAttack?=?new?Thread(redAttack0,"紅方軍團");
		Thread?blueAttack?=?new?Thread(blueAttack0,"藍方軍團");
		
		//軍演戰(zhàn)斗的帷幕徐徐拉開
		System.out.println("軍演戰(zhàn)斗的序幕徐徐拉開······");
		try?{
			Thread.sleep(5000);
		}?catch?(InterruptedException?e1)?{
			//?TODO?Auto-generated?catch?block
			e1.printStackTrace();
		}
		
		//啟動線程,開始作戰(zhàn)
		redAttack.start();
		blueAttack.start();
		//關(guān)閉舞臺線程,保證軍演專心進行一會兒。否則程咬金會提前登場!
		//同時sleep時間太短(比如休眠25ms)會導(dǎo)致軍團線程插入程咬金線程,為什么?????????????????????
		try?{
//			this.sleep(50);//這種方法也可以,或者Thread.sleep(50)
			sleep(50);//簡寫.
		}?catch?(InterruptedException?e)?{
			e.printStackTrace();
		}
		
		//半路殺出個Hero!
		System.out.println("半路殺出個程咬金!");
		//創(chuàng)建英雄程咬金線程,并開啟
		Hero?hero?=?new?Hero();
		Thread?chengyj?=?new?Thread(hero,"程咬金");
		chengyj.start();
		try?{
			chengyj.join();
		}?catch?(InterruptedException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
		
		//結(jié)束兩個軍團線程,需要最后一遍循環(huán)結(jié)束
		redAttack0.keepRunning=false;
		blueAttack0.keepRunning=false;
		
		//給兩個軍團線程結(jié)束一點兒時間
		try?{
			Thread.sleep(2000);
		}?catch?(InterruptedException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
		System.out.println("軍演結(jié)束!");
		
	}
	
	public?static?void?main(String[]?args)?{
		//啟動舞臺,開始觀戰(zhàn)
		new?Stage().start();
	}

}

第一次sleep時,50ms可以保證不被插隊,但是25ms就會出現(xiàn)下圖所示:

http://img1.sycdn.imooc.com//5962107a0001dd9405950660.jpg

正在回答

1 回答

你代碼順序錯了,應(yīng)該先停止雙方線程,然后再讓關(guān)鍵線程運行。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

秦家小小神 提問者

不是順序問題,我想問的是join方法的作用不是Waits for this thread to die嗎?怎么可能讓別的線程插隊?也就是說,只要使用join方法的線程開啟了,那它就不會被插隊,難道我理解錯了?
2017-07-10 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕數(shù)據(jù)4042892 回復(fù) 秦家小小神 提問者

t.join()方法阻塞調(diào)用此方法的線程(calling thread),直到線程t完成,此線程再繼續(xù)。是舞臺線程調(diào)用了hero線程,所以只有舞臺線程會停下來等hero線程結(jié)束再運行,而軍隊線程和hero沒直接關(guān)聯(lián)。
2017-08-24 回復(fù) 有任何疑惑可以回復(fù)我~
#3

慕瓜7073846 回復(fù) 慕數(shù)據(jù)4042892

舞臺休眠的作用是什么?是不是為了讓紅藍雙方在這段休眠時間中廝殺,也就是說休眠一段時間再執(zhí)行keepRunning=false,結(jié)束雙方戰(zhàn)斗線程。
2018-04-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

我自己試驗了下,如果sleep時間過短,會導(dǎo)致join后還是被插隊。求解!

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號