線程池的停止


上篇博客介紹了線程池的創建的,本文重點介紹線程池應該如何關閉。

線程池停止的相關方法有:shutdown、

shutdown

  關閉線程池的方法之一,調用線程池的此方法后,不再接受新的任務,待所有任務都執行關閉后,進行關閉

  實例代碼如下所示,不再接收新任務測試。

  

package threadPool;

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

public class FixedThreadPoolTest {
    public static void main(String[] args) throws InterruptedException {
        ExecutorService executorService= Executors.newFixedThreadPool(4);
        for (int i=0;i<Integer.MAX_VALUE;i++){
            executorService.execute(new FixTask());
        }
        Thread.sleep(1500);
        executorService.execute(new FixTask());
    }
}

class FixTask implements Runnable{

    @Override
    public void run() {
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName());
    }
}

 isShutdown

 線程池是否已經關閉,當調用shutdown之后,此值為true

isTerminated

  線程池所有任務任務是否已經關閉,包括正在執行和隊列中的任務都結束了

awaitTermination

  相對比較弱,等待一段時間,阻塞一段時間,要是線程執行完了,為true,否則為false,可以進行線程池檢測

shutdownNow

  暴力關閉所有線程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM