JavaSE中多執行緒案例1(關於物件鎖)

2021-08-19 06:59:40 字數 1561 閱讀 4278

案例要求:

某公司組織年會,會議入場時有兩個入口,在入場時每位員工都能獲取一張雙色球彩票,假設公司有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 ...