課程
/后端開發
/Java
/深入淺出Java多線程
按理來說雙方軍隊結束了,之后按順序就是程咬金出場哇,為啥不用jion方法的時候會跳著運行代碼呢?
2019-10-12
源自:深入淺出Java多線程 2-5
正在回答
其實老師的代碼如果在雙方軍隊戰斗那加上sleep()方法的話,你會發現:程咬金先戰斗完之后才是軍隊執行完
因此個人覺得應該在程咬金出廠后加入一個判斷,如下所示:
//新建關鍵人物 KeyPerson?keyPerson?=?new?KeyPerson(); Thread?chengYaojin?=?new?Thread(keyPerson,"程咬金"); while(true){ ????if(!suiThread.isAlive()?&&?!farmThread.isAlive()){ ????????System.out.println("程咬金開始戰斗??!"); chengYaojin.start(); //chengYaojin.join(); System.out.println("大戲結束?。。?); break; } } ????????chengYaojin.start(); ????????chengYaojin.join(); ????????System.out.println("大戲結束?。。?); ????????break; ????} }
這樣的話才能使得雙方軍隊退場后,程咬金才會上場,才符合邏輯。
森森0515 提問者
舉報
帶你一起深入淺出多線程,掌握基礎,展望進階路線
2 回答為什么我的調用軍隊方法是成功的但是不執行循環里面的內容?
4 回答為什么在為什么在輸出了“程咬金的,,,,樂業”這一行后,兩方軍隊的進攻批次最少是0最多是5呢???
1 回答求問為什么Stage休眠結束之后,處理機為什么就被那個軍隊占用,然后一直執行,停不下來了,不會回到Stage 嗎
2 回答不知道什么時候結束的欸
2 回答是不是使用了join 之后,使用了join 的線程運行結束之后才能讓這個程序再次的運行下去。如果不是用join 那么這個線程在運行的時候和當前方法中的運行關系不大。所以就提前輸出了戰斗結束。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-10-17
其實老師的代碼如果在雙方軍隊戰斗那加上sleep()方法的話,你會發現:程咬金先戰斗完之后才是軍隊執行完
因此個人覺得應該在程咬金出廠后加入一個判斷,如下所示:
這樣的話才能使得雙方軍隊退場后,程咬金才會上場,才符合邏輯。