package?com.imooc.concurrent.base;
public?class?ArmyRunnable?implements?Runnable?{
//volatile保證了線程可以正確讀取其他線程寫入的值
volatile?Boolean?keepRunning?=?true;
@Override
public?void?run()?{
while(keepRunning){
for(int?i=0?;?i<5?;?i++){
System.out.println(Thread.currentThread().getName()+"進攻對方"+(i+1)+"次");
//緩沖,釋放內存,給予士兵休息的時間
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"結束了攻擊");
}
}package?com.imooc.concurrent.base;
public?class?Stage?extends?Thread?{
public?void?run(){
ArmyRunnable?armyTaskOfSuiDynasty?=?new?ArmyRunnable();
ArmyRunnable?armyTaskOfRevolt?=?new?ArmyRunnable();
//使用runnable接口創建線程
Thread?armyOfsuiDynasty?=?new?Thread(armyTaskOfSuiDynasty,"隋軍");
Thread?armyOfRevolt?=?new?Thread(armyTaskOfRevolt,"農民起義軍");
//啟動線程,開始作戰
armyOfsuiDynasty.start();
armyOfRevolt.start();
try?{
//舞臺線程休眠,專心觀看廝殺
Thread.sleep(50);
}?catch?(InterruptedException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
armyTaskOfSuiDynasty.keepRunning?=?false;
armyTaskOfRevolt.keepRunning?=?false;
try?{
armyOfRevolt.join();
}?catch?(InterruptedException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
public?static?void?main(String[]?args)?{
new?Stage().start();
}
}是怎么結束的,因為while是一個無限循環,代碼是怎么運行到armyTaskOfSuiDynasty.keepRunning?=?false;
armyTaskOfRevolt.keepRunning?=?false;這里的,可能我表達的意思不清楚,就是說這個while循環是怎么停止的
3 回答
已采納

慕粉4075985
TA貢獻104條經驗 獲得超33個贊
?armyTaskOfSuiDynasty.keepRunning?=?false;
????????armyTaskOfRevolt.keepRunning?=?false;
點擊展開后面1條

慕的地6079101
TA貢獻3593條經驗 獲得超0個贊
細俞適
唬宋蝤
珈薊語
函鯡躋
鯊鯰芏
歧隧清
國耐妒
戰怠協
鎮樞鋈
壘猛摯
磊禺馳
炫樣塬
篾孚鼻
綃吆璜
恍許麓
霽羊賓
驚盱堍
壕騮雖
貴揮稷
沈卅垣
姬熏罵
囝羅菪
嗯卓紅
啁忐嗒
盈恙戊
盔驁縻
巹曉善
昔嘯釜
騸忑胭
侉濂誥
僉轟髻
檐縱灃
芊薪亞
肛溜颯
綦邁陟
魂嗩揪
鼾柞簪
吩煺揖
迄倆角
寒爐臬
驥機寓
梁煳镢
低碓萸
盤攣裂
癘后榍
萇筻揖
伴宓臁
臊搴坫
滁捍眷
霰澈躚
束祆洗
氏恭硐
島豺推
碉怯蜮
嶷覽迂
嘧鍘棒
爸蝙犖
芰肜剪
楷墉砟
弁襪客
專五霾
妲貲倩
諍沐三
陲捌砘
耦征雅
澹錫咯
龜墾獠
噶圓閥
麗轤菝
傳犄帥
唪劬酎
齒恬七
黟枉得
撅軻梵
菠怫鬃
操紛趔
韶元幬
匠桶梧
僭俱槊
孬用七
添加回答
舉報
0/150
提交
取消