如何確保多執行緒已經全部執行完成

2021-10-25 01:53:05 字數 1192 閱讀 3265

利用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 方法返回 對應...