线程池相关类
ExecutorService , 线程池接口
Executors 线程池工具类,可以生成不同类型的线程池,
Executors.newFixedThreadPool(3); //固定数量的线程池 corePoolSize=maximumPoolSize=3 Executors.newCachedThreadPool(); //缓存线程池corePoolSize =0,maximumPoolSize=Integer.MAX_VALUE, Executors.newSingleThreadExecutor();//单线程池 corePoolSize=maximumPoolSize=1 Executors.newScheduledThreadPool(3); //支持定时或者周期性任务执行 Executors.newWorkStealingPool(); //支持并行执行任务
Executors.newFixedThreadPool(3);调用的是new ThreadPoolExecutor
所以ThreadPoolExecutor线程池的真正实现类
向线程池提交任务
带返回值
不带返回值
execute(Runnable) 内部的逻辑
1.如果当前线程池内线程数量小于corePoolSize 数量,会创建一个新的线程,去执行该任务
2.如果线程内线程数大于corePoolSize,则会将任务 提交到 workQueue(阻塞队列)。通过offer方法添加,会立即返回是否添加成功
3.如果workQueued队列已经满了,而当前线程池内线程数量小于maximumPoolSize ,
则创建一个新的线程执行该任务,如果当前线程池内线程数量大于maximumPoolSize数量,则执行拒绝策略
原文:https://www.cnblogs.com/moris5013/p/10791966.html