第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

大家看看為什么是死循環(huán)

package?com.currentcount.base;
/**
?*?搭建了舞臺(tái)線程
?*?
?*
?*/
public?class?Stage?extends?Thread?{
	//復(fù)寫run方法
	public?void?run(){
		System.out.println("歡迎觀看隋唐演義!");
		try?{
			Thread.sleep(5000);
		}?catch?(InterruptedException?e2)?{
			
			e2.printStackTrace();
		}
		System.out.println("大幕徐徐拉開");
		try?{
			Thread.sleep(5000);
		}?catch?(InterruptedException?e2)?{
			//?TODO?Auto-generated?catch?block
			e2.printStackTrace();
		}
		System.out.println("話說隋朝末年,各路藩王和隋軍殺的是昏天黑地");
		ArmyRunnable?armyTaskOfSuiDynasty=new?ArmyRunnable();
		ArmyRunnable?armyTaskOfFarmer=new?ArmyRunnable();
		
		//使用Runnable創(chuàng)建線程
		Thread?armyOfSuiDynasty=new?Thread(armyTaskOfSuiDynasty,"隋朝軍隊(duì)");
		Thread?armyOfFarmer=new?Thread(armyTaskOfFarmer,"農(nóng)民軍隊(duì)");
		
		//線程的運(yùn)行
		armyOfSuiDynasty.start();
		armyOfFarmer.start();
		//讓舞臺(tái)線程休眠,大家能夠?qū)P挠^看軍隊(duì)的廝殺
		try?{
			Thread.sleep(50);
		}?catch?(InterruptedException?e)?{
			
			e.printStackTrace();}
			
			try?{
				armyOfFarmer.join();
			}?catch?(InterruptedException?e1)?{
				
				e1.printStackTrace();
			}
			
			System.out.println("正當(dāng)雙方激戰(zhàn)正酣,半路殺出了個(gè)程咬金");
			Thread?Chengyaojin=new?KeypersonThread();
			Chengyaojin.setName("程咬金");
			System.out.println("程咬金的理想就是結(jié)束戰(zhàn)斗,使得百姓安居樂業(yè)");
			//軍隊(duì)停止戰(zhàn)斗
			armyTaskOfSuiDynasty.keepRunning=false;
			armyTaskOfFarmer.keepRunning=false;
			try?{
				Thread.sleep(2000);
			}?catch?(InterruptedException?e)?{
				//?TODO?Auto-generated?catch?block
				e.printStackTrace();
			}
			
			Chengyaojin.start();
			//所有線程等待程咬金完成自己的歷史使命
			try?{
				Chengyaojin.join();
			}?catch?(InterruptedException?e)?{
				//?TODO?Auto-generated?catch?block
				e.printStackTrace();
			}
			
			System.out.println("程咬金完成了自己的理想,結(jié)束了戰(zhàn)斗,使得人民能夠安居樂業(yè)");
			System.out.println("感謝觀看隋唐演義!");
		
		
				
				
		
	}
	


正在回答

5 回答

Stage的run方法里有armyOfFarmer.join();這句。這句的意思是說農(nóng)民的run方法執(zhí)行完了才能往armyOfFarmer.join();這句代碼之后運(yùn)行。但你看看你的ArmyRunnable的run方法里,while?(keepRunning)的keepRuning一直是true,while循環(huán)沒有被終止。所以發(fā)生了死鎖。

把Stage的run方法里的armyTaskOfFarmer.keepRunning=false;這句代碼修改到armyOfFarmer.join();這句代碼之前,就不會(huì)發(fā)生死鎖了。

下面是我修改之后的代碼

public?class?Stage?extends?Thread?{
????????//復(fù)寫run方法
????????public?void?run()?{
????????????System.out.println("歡迎觀看隋唐演義!");
????????????try?{
????????????????Thread.sleep(5000);
????????????}?catch?(InterruptedException?e2)?{

????????????????e2.printStackTrace();
????????????}
????????????System.out.println("大幕徐徐拉開");
????????????try?{
????????????????Thread.sleep(5000);
????????????}?catch?(InterruptedException?e2)?{
????????????????//?TODO?Auto-generated?catch?block
????????????????e2.printStackTrace();
????????????}
????????????System.out.println("話說隋朝末年,各路藩王和隋軍殺的是昏天黑地");
????????????ArmyRunnable?armyTaskOfSuiDynasty?=?new?ArmyRunnable();
????????????ArmyRunnable?armyTaskOfFarmer?=?new?ArmyRunnable();

????????????//使用Runnable創(chuàng)建線程
????????????armyOfSuiDynasty?=?new?Thread(armyTaskOfSuiDynasty,?"隋朝軍隊(duì)");
????????????armyOfFarmer?=?new?Thread(armyTaskOfFarmer,?"農(nóng)民軍隊(duì)");

????????????//線程的運(yùn)行
????????????armyOfSuiDynasty.start();
????????????armyOfFarmer.start();
????????????//讓舞臺(tái)線程休眠,大家能夠?qū)P挠^看軍隊(duì)的廝殺
????????????try?{
????????????????Thread.sleep(50);
????????????}?catch?(InterruptedException?e)?{

????????????????e.printStackTrace();
????????????}

????????????try?{
????????????????armyTaskOfFarmer.keepRunning?=?false;//這行代碼提前!?。。?????????????????armyOfFarmer.join();
????????????}?catch?(InterruptedException?e1)?{

????????????????e1.printStackTrace();
????????????}

????????????System.out.println("正當(dāng)雙方激戰(zhàn)正酣,半路殺出了個(gè)程咬金");
????????????Thread?Chengyaojin?=?new?KeypersonThread();
????????????Chengyaojin.setName("程咬金");
????????????System.out.println("程咬金的理想就是結(jié)束戰(zhàn)斗,使得百姓安居樂業(yè)");
????????????//軍隊(duì)停止戰(zhàn)斗
????????????armyTaskOfSuiDynasty.keepRunning?=?false;
//????????????armyTaskOfFarmer.keepRunning?=?false;
????????????try?{
????????????????Thread.sleep(2000);
????????????}?catch?(InterruptedException?e)?{
????????????????//?TODO?Auto-generated?catch?block
????????????????e.printStackTrace();
????????????}

????????????Chengyaojin.start();
????????????//所有線程等待程咬金完成自己的歷史使命
????????????try?{
????????????????Chengyaojin.join();
????????????}?catch?(InterruptedException?e)?{
????????????????//?TODO?Auto-generated?catch?block
????????????????e.printStackTrace();
????????????}

????????????System.out.println("程咬金完成了自己的理想,結(jié)束了戰(zhàn)斗,使得人民能夠安居樂業(yè)");
????????????System.out.println("感謝觀看隋唐演義!");


????????}
????}


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

greenhandc 提問者

thank you~不過老師為什么要加上jion農(nóng)民啊
2015-12-18 回復(fù) 有任何疑惑可以回復(fù)我~
#2

喬小欠兒 回復(fù) greenhandc 提問者

我沒看那個(gè)視頻,我也不太清楚老師的需求是什么,但不管老師的需求是什么,join農(nóng)民之前必須要讓農(nóng)民的run方法能執(zhí)行完,這樣才能不會(huì)發(fā)生死鎖
2015-12-18 回復(fù) 有任何疑惑可以回復(fù)我~
public?class?KeypersonThread?extends?Thread{
	
	public?void?run(){
		System.out.println(Thread.currentThread().getName()+"開始了戰(zhàn)斗!");
		for(int?i=0;i<10;i++){
			System.out.println(Thread.currentThread().getName()+"左突右殺,攻擊了隋軍");
		}
		
		
		
		
		System.out.println(Thread.currentThread().getName()+"結(jié)束了戰(zhàn)斗!");
	}


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

沒注意還有個(gè)這個(gè)KeypersonThread...這個(gè)里面是什么啊

0 回復(fù) 有任何疑惑可以回復(fù)我~
public?class?ArmyRunnable?implements?Runnable?{
????//這里使用volatile保證線程可以正確的讀取其他線程寫入的值
????volatile?boolean?keepRunning=true?;
?
????//軍隊(duì)線程
????//用來模擬作戰(zhàn)
????public?void?run()?{
?????
????????while?(keepRunning){
????????????//發(fā)動(dòng)五連擊
????????????for(int?i=0;i<5;i++){
????????????????System.out.println(Thread.currentThread().getName()+"進(jìn)攻"+i+"次");
????????????????//讓出處理器的時(shí)間,下次誰攻擊還不一定
????????????????Thread.yield();
????????????}
?????????????
????????}
?????????
????????System.out.println(Thread.currentThread().getName()+"停止攻擊");
?????????
?
????}
?
}


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

ArmyRunnable這個(gè)Runnable里面寫的是什么啊

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

舉報(bào)

0/150
提交
取消

大家看看為什么是死循環(huán)

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

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

幫助反饋 APP下載

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

公眾號(hào)

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