1. 程式人生 > >java 多執行緒執行時長統計

java 多執行緒執行時長統計

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);