課程
/后端開發(fā)
/Java
/深入淺出Java多線程
為什么舞臺(tái)線程不休眠,軍隊(duì)線程也能進(jìn)行下去呢 好奇怪,而且沒看法停止軍隊(duì)線程
2017-02-27
源自:深入淺出Java多線程 2-5
正在回答
輪流運(yùn)行,舞臺(tái)線程只是會(huì)占用一部分其他線程的運(yùn)行時(shí),但不是全部占用,其他線程還是有機(jī)會(huì)運(yùn)行的。
public class Stage extends Thread {
public void run() {
System.out.println("舞臺(tái)線程");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("大幕徐徐拉開");
ArmyOfSuiDynasty armyOfDynasty = new ArmyOfSuiDynasty("朝廷軍");
ArmyOfSuiDynasty armyOfFamer = new ArmyOfSuiDynasty("農(nóng)民軍");
// 用Runnable接口創(chuàng)建線程
Thread armyTaskOfSuiDynasty = new Thread(armyOfDynasty, "朝廷軍線程");
Thread armyTaskOfFamer = new Thread(armyOfFamer, "農(nóng)民軍線程");
// 啟動(dòng)線程,讓軍隊(duì)開始作戰(zhàn)
armyTaskOfSuiDynasty.start();
armyTaskOfFamer.start();
// //讓主線程進(jìn)入休眠狀態(tài),讓出處理時(shí)間
// try {
//
// Thread.sleep(1);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// 將作戰(zhàn)指令設(shè)為停止
armyOfDynasty.keepRunning = false;
armyOfFamer.keepRunning = false;
armyTaskOfFamer.join();
} catch (InterruptedException e) {
e.printStackTrace();
public static void main(String[] args) {
Stage s = new Stage();
s.start();
舉報(bào)
帶你一起深入淺出多線程,掌握基礎(chǔ),展望進(jìn)階路線
2 回答為什么停止軍隊(duì)線程的操作是被舞臺(tái)線程執(zhí)行的?
1 回答軍隊(duì)線程中yield
2 回答線程的停止
1 回答停止線程鍵
1 回答為什么我的軍隊(duì)在線程開始執(zhí)行之后沒有while循環(huán)?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-07-09
輪流運(yùn)行,舞臺(tái)線程只是會(huì)占用一部分其他線程的運(yùn)行時(shí),但不是全部占用,其他線程還是有機(jī)會(huì)運(yùn)行的。
2017-02-27
public class Stage extends Thread {
public void run() {
System.out.println("舞臺(tái)線程");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("大幕徐徐拉開");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ArmyOfSuiDynasty armyOfDynasty = new ArmyOfSuiDynasty("朝廷軍");
ArmyOfSuiDynasty armyOfFamer = new ArmyOfSuiDynasty("農(nóng)民軍");
// 用Runnable接口創(chuàng)建線程
Thread armyTaskOfSuiDynasty = new Thread(armyOfDynasty, "朝廷軍線程");
Thread armyTaskOfFamer = new Thread(armyOfFamer, "農(nóng)民軍線程");
// 啟動(dòng)線程,讓軍隊(duì)開始作戰(zhàn)
armyTaskOfSuiDynasty.start();
armyTaskOfFamer.start();
// //讓主線程進(jìn)入休眠狀態(tài),讓出處理時(shí)間
// try {
//
// Thread.sleep(1);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// 將作戰(zhàn)指令設(shè)為停止
armyOfDynasty.keepRunning = false;
armyOfFamer.keepRunning = false;
try {
armyTaskOfFamer.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Stage s = new Stage();
s.start();
}
}