天天看点

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 安装