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

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

能量守恒中是否會(huì)出死鎖的問題?

我按照視頻中的代碼重寫了一編,發(fā)現(xiàn)在運(yùn)行時(shí)經(jīng)常會(huì)不出數(shù)據(jù),但是程序還沒子啊運(yùn)行,是不是死鎖

正在回答

2 回答

這個(gè)設(shè)置了,這是我的代碼,我跟視頻上不完全一樣,一個(gè)是測(cè)試,一個(gè)thread,謝謝了

package?project_thread;



public?class?EnergyThread?extends?Thread?{
	
	
	private?final?double[]?energy_box;
	private?double?energy_max;
	private?Object?lock=new?Object();
?????@Override
????public?void?run()?{
????	//?TODO?Auto-generated?method?stub
????	
????	?while?(true)?{
			int?from=(int)?(Math.random()*getlength());
			int?to?=(int)?(Math.random()*getlength());
			double?energy=Math.random()*energy_max;
			int?time=(int)?(Math.random()*50);
			energy_tansform(from,?to,?energy);
			try?{
				sleep(time);
			}?catch?(InterruptedException?e)?{
				//?TODO?Auto-generated?catch?block
				e.printStackTrace();
			}
			
		}
????}
?????public?EnergyThread(double?energy_initial,int??n)?{
		//?TODO?Auto-generated?constructor?stub
????	?this.energy_box=new?double[n];
????	?this.energy_max=energy_initial;
????	?for?(int?i?=?0;?i?<?n;?i++)?{
			energy_box[i]=energy_initial;
		}
	}
?????
?????public?int?getenergy_total()?{
????	?double?total=0;
????	?for?(double?d?:?energy_box)?{
			total+=d;
		}
		return?(int)total;
	}
?????
?????public?void?energy_tansform(int?from,int?to?,double?energy)?{
		synchronized?(lock)?{
			if(energy_box[from]<energy){
				try?{
					lock.wait();
				}?catch?(InterruptedException?e)?{
					//?TODO?Auto-generated?catch?block
					e.printStackTrace();
				}
				
			}
			energy_box[from]-=energy;
			energy_box[to]+=energy;
			System.out.println(getName()+":energy_box["+from+"]向energy_box["+to+"]轉(zhuǎn)移"+energy+"energy_total="+getenergy_total());
			lock.notifyAll();
		}
	}
?????
?????public?int??getlength()?{
		return?energy_box.length;
	}
}
package?project_thread;

public?class?ThreadTest?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
????????
?????????for(int?i=0;i<100;i++){
????????	?Thread?thread=new?EnergyThread(1000,100);
????????	?thread.start();
?????????}
????????
	}

}


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

對(duì)著視頻再檢查一下吧,

你看一下run方法里的amount有沒有寫對(duì),double amount=maxAmount*Math.random();

transfer的時(shí)候amout必須滿足amount<=amxAmount,不然就會(huì)造成死鎖

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

小不點(diǎn)2016 提問者

因?yàn)樽謹(jǐn)?shù)的限制,我把代碼完全復(fù)制到底下,麻煩了
2016-07-31 回復(fù) 有任何疑惑可以回復(fù)我~
#2

SilenceDean 回復(fù) 小不點(diǎn)2016 提問者

我試了一下,的確會(huì)出現(xiàn)這種情況,應(yīng)該是死循環(huán)導(dǎo)致的,這個(gè)只是用來理解同步的例子,模擬理論上體系內(nèi)永久能量守恒, 正常情況下會(huì)用1個(gè)flag退出循環(huán)
2016-07-31 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

能量守恒中是否會(huì)出死鎖的問題?

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

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

幫助反饋 APP下載

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

公眾號(hào)

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