案例要求:
某公司組織年會,會議入場時有兩個入口,在入場時每位員工都能獲取一張雙色球彩票,假設公司有100個員工,利用多執行緒模擬年會入場過程,
並分別統計每個入口入場的人數,以及每個員工拿到的彩票的號碼。執行緒執行後列印格式如下:
編號為: 2 的員工 從後門 入場! 拿到的雙色球彩票號碼是: [17, 24, 29, 30, 31, 32, 07]
編號為: 1 的員工 從後門 入場! 拿到的雙色球彩票號碼是: [06, 11, 14, 22, 29, 32, 15]
//.....
從後門入場的員工總共: 13 位員工
從前門入場的員工總共: 87 位員工
/*
* 定義員工employee共享資料為進入年會的員工個數
*/public class employee
/*
* 前門執行緒
* 為了保證不同執行緒任務在操作共享資料時沒有安全隱患,需要:
* 在commeeting測試類中建立唯一乙個employee物件,並將這個物件作為引數傳入本前門執行緒類的構造器
* 將這個物件作為同步構造器中的鎖物件
*/public class fdoor implements runnable
private random ran = new random();
public void run()
}system.out.print("編號為: " + e.num + "的員工從前門入場!拿到的雙色球彩票號碼是:");
system.out.print("[");
for(int i = 0; i < 7; i++) else
}elseelse }}
count++;
e.num++;}}
} }}
/*
* 後門執行緒
* 為了保證不同執行緒任務在操作共享資料時沒有安全隱患,需要:
* 在commeeting測試類中建立唯一乙個employee物件,並將這個物件作為引數傳入本後門執行緒類的構造器
* 將這個物件作為同步構造器中的鎖物件
*/public class bdoor implements runnable
private random ran = new random();
public void run()
}system.out.print("編號為: " + e.num + "的員工從後門入場!拿到的雙色球彩票號碼是:");
system.out.print("[");
for(int i = 0; i < 7; i++) else
}else else }}
count++;
e.num++;}}
} }}
/*
* 年會執行緒,建立runnable實現類物件,並建立兩個執行緒,開啟執行緒
*/public class commeeting catch(exception ex) finally
}}
javaSE 多執行緒(守護執行緒)
我們一般使用多執行緒,都是while 的死迴圈,想要結束執行緒,只需退出死迴圈即可 當執行緒中呼叫了sleep 方法或者 wait 方法,當前的執行緒就會進入凍結狀態,這個執行緒就結束不了 呼叫thread 物件的interrupt 方法,可以強制解凍,此時 run 方法中需要捕獲到 interru...
javaSE 多執行緒之執行緒池
1 使用語法 publicstaticvoiduseexecutorservice executorservice shutdown 輸出 pool 1 thread 3 pool 1 thread 2 pool 1 thread 1 pool 1 thread 3 pool 1 thread 2 ...
JavaSE 20190511 多執行緒
一.多執行緒 1.多執行緒 多工同時執行就是多執行緒,如果沒有任務,就不需要使用多執行緒 2.執行緒和程序之間的區別 執行緒 cpu排程的最小單位 程序 資源分配的最小單位 乙個程序可以包含1 n個執行緒 3.執行緒開啟的方式 1 繼承thread類,重寫run 方法 建立子類物件,呼叫start ...