線程池-isShutdown和isTerminated

1.線程池 isShutdown和isTerminated的區別

isShutDown當調用shutdown()方法後返回爲true。
isTerminated當調用shutdown()方法後,並且所有提交的任務完成後返回爲true

線程池任務正常完成,都爲false

package com.cweeyii.threadpool;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * Created by wenyi on 16/10/16.
 * Email:[email protected]
 */
public class ShutDownWait {
    private static final Logger LOGGER = LoggerFactory.getLogger(ShutDownWait.class);

    public static void main(String[] args) throws InterruptedException {
        int workerNum = 2;
        ExecutorService executorService = Executors.newFixedThreadPool(workerNum);
        for (int i = 0; i < workerNum; i++) {
            executorService.submit(new SleepWorker());
        }
        //executorService.shutdown();
        //LOGGER.info("shutdown=" + executorService.isShutdown() + " terminate=" + executorService.isTerminated());
        executorService.awaitTermination(10, TimeUnit.SECONDS);
        LOGGER.info("shutdown="+executorService.isShutdown()+" terminate="+executorService.isTerminated());
        LOGGER.info("調用shutdown會立即返回不會等待線程池任務執行完");
    }
}
12:56:58.849  INFO (SleepWorker.java:31) - threadName=pool-1-thread-1 線程結束null工作
12:56:58.849  INFO (SleepWorker.java:31) - threadName=pool-1-thread-2 線程結束null工作
12:57:06.843  INFO (ShutDownWait.java:26) - shutdown=false terminate=false
12:57:06.846  INFO (ShutDownWait.java:27) - 調用shutdown會立即返回不會等待線程池任務執行完
取消註釋後結果:
13:57:08.518  INFO (ShutDownWait.java:24) - shutdown=true terminate=false
13:57:10.523  INFO (SleepWorker.java:31) - threadName=pool-1-thread-1 線程結束null工作
13:57:10.523  INFO (SleepWorker.java:31) - threadName=pool-1-thread-2 線程結束null工作
13:57:10.526  INFO (ShutDownWait.java:26) - shutdown=true terminate=true
13:57:10.527  INFO (ShutDownWait.java:27) - 調用shutdown會立即返回不會等待線程池任務執行完
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章