java 多執行緒執行時長統計
阿新 • • 發佈:2018-12-14
ExecutorService——shutdown方法和awaitTermination方法
shutdown方法:平滑的關閉ExecutorService,當此方法被呼叫時,ExecutorService停止接收新的任務並且等待已經提交的任務(包含提交正在執行和提交未執行)執行完成。當所有提交任務執行完畢,執行緒池即被關閉。
awaitTermination方法:接收人timeout和TimeUnit兩個引數,用於設定超時時間及單位。當等待超過設定時間時,會監測ExecutorService是否已經關閉,若關閉則返回true,否則返回false。一般情況下會和shutdown方法組合使用。
long startTime = System.currenttime(); ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(index * 1000); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.println(index); } }); } cachedThreadPool.shutdown(); while(!cachedThreadPool.awaitTermination(1,TimeUnit.SECONDS)){ System.out.println("執行緒池未關閉") } System.out.println(System.currenttime()-startTime);