利用countdownlatch閉鎖實現。
countdownlatch可以使乙個或多個執行緒等待一組事件的發生,閉鎖狀態包含乙個計數器,該計數器被初始化為乙個正數,表示需要等待事件的數量。
發揮主要作用的兩個方法分別是:
countdown();遞減計數器,表示乙個事件已經發生了;
await();等待計數器達到零,如果計數器的值非零,那麼await會一直阻塞直到計數器為零,或等待中的執行緒中斷,或等待超時。
publicclass
timetest
}public
static
void main(string args) throws
interruptedexception
finally
});t.start();
}endgate.await();
system.out.println("執行緒執行完成");
}}
另外,我們還可以利用countdownlatch來計算多執行緒執行乙個任務需要的時間。
publicclass
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 方法返回 對應...