用雙線程實現。他殺。
每當一個線程從池中被取出的時候,給該線程分配一個UUID用於標志此次任務,同時啟動另外一個殺手線程開始計時(即sleep),並且該殺手線程持有同樣UUID用於尋找要殺死的目標。

 

當殺手覺醒後即刻檢查:
1.如果目標線程已歸還到池中,說明目標線程在規定時間前已結束。則不做任何操作。
2.如果目標線程還在池外,但是其UUID與自己所持目標UUID不一致,說明所監視的線程正常結束後被再次取出使用。交由另外一個殺手線程處理,本殺手不做任何操作。
3.如果目標線程仍在池外並且所持UUID與目標UUID一致(bingo!),則殺死該線程,並把屍體歸還池中。

 

public void run() {
while (true) {
if (Thread.currentThread().isInterrupted()) {
return;
}
// do something
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()