天天看點

ThreadPool線程池的關注點

從中可以看出task1和task2依次最先執行,這時候currentPoolSize=2達到了corePoolSize,task3、task4、task5被送入緩沖隊列,達到了workQueue最大值3,task6、task7、task8開啟新的線程開始執行,此時currentPoolSize=5達到了maximumPoolSize,task9、task10根據AbortPolicy政策抛出異常,不再執行task9和task10。10秒鐘後task1、task2….依次執行完畢釋放線程,開始執行隊列裡的task3、task4、task5,最後task3、4、5執行完畢,所有任務完成。

JDK根據ThreadPoolExecutor配置好的線程池 

// 固定工作線程數量的線程池  

ExecutorService executorService1 = Executors.newFixedThreadPool(3);  

// 一個可緩存的線程池  

ExecutorService executorService2 = Executors.newCachedThreadPool();  

// 單線程化的Executor  

ExecutorService executorService3 = Executors.newSingleThreadExecutor();  

// 支援定時的以及周期性的任務執行  

ExecutorService executorService4 = Executors.newScheduledThreadPool(3);

上一篇: Vue.js 安裝