利用countdownlatch閉鎖實現。
countdownlatch可以使乙個或多個執行緒等待一組事件的發生,閉鎖狀態包含乙個計數器,該計數器被初始化為乙個正數,表示需要等待事件的數量。
發揮主要作用的兩個方法分別是:
countdown(); 遞減計數器,表示乙個事件已經發生了;
await(); 等待計數器達到零,如果計數器的值非零,那麼await會一直阻塞直到計數器為零,或等待中的執行緒中斷,或等待超時。
public
class
timetest
}public
static
void
main
(string[
] args)
throws interruptedexception
finally})
; t.
start()
;}endgate.
await()
; system.out.
println
("執行緒執行完成");
}}
另外,我們還可以利用countdownlatch來計算多執行緒執行乙個任務需要的時間。
public
class
timetest
}public
static
void
main
(string[
] args)
throws interruptedexception
finally
}catch
(interruptedexception ignored)})
; t.
start()
;}long start = system.
nanotime()
; startgate.
countdown()
; endgate.
await()
;long end = system.
nanotime()
; system.out.
println
("耗時:"
+(end-start));
}
如何確保多執行緒已經全部執行完成
利用countdownlatch閉鎖實現。countdownlatch可以使乙個或多個執行緒等待一組事件的發生,閉鎖狀態包含乙個計數器,該計數器被初始化為乙個正數,表示需要等待事件的數量。發揮主要作用的兩個方法分別是 countdown 遞減計數器,表示乙個事件已經發生了 await 等待計數器達到...
多執行緒如何判斷全部執行緒是否已經全部結束?
提問者 旺旺 瀏覽次數 1904次 class readfilethread implements runnable public void readfilethread int i catch exception e public void run catch exception e public...
多執行緒 如何確定所有任務都執行完成了?
20180502更新 今天學習到了乙個比較強大的類 executorcompletionservice,它是將 executor和blockqueue結合的jdk類,其實現的主要目的是 提交任務執行緒,每乙個執行緒任務直線完成後,將返回值放在阻塞佇列中,然後可以通過阻塞佇列的take 方法返回 對應...