Java:线程池

线程池的构造器

复制代码
public ThreadPoolExecutor(
int corePoolSize,                   //核心线程数(最初创建的,不会被销毁)
int maximumPoolSize,                //最大线程数(核心线程数 + 非核心线程数(额外创建的线程,会被销毁))
long keepAliveTime,                 //非核心线程在空闲后释放的时机,即非核心线程允许空闲的最大时间
TimeUnit unit,                      //非核心线程允许空闲的最大时间的单位
BlockingQueue<Runnable> workQueue,  //有阻塞功能的任务队列
ThreadFactory threadFactory,        //线程工厂
RejectedExecutionHandler handler    //拒绝策略
            ) {}

拒绝策略

java 复制代码
//                           ----------拒绝策略----------
ThreadPoolExecutor.AbortPolicy            
//队列满后若继续调用submit提交任务则会抛出异常

ThreadPoolExecutor.CallerRunsPolicy       
//队列满后若继续调用submit提交任务则会让调用submit的这个线程执行这个任务

ThreadPoolExecutor.DiscardOldestPolicy    
//队列满后若继续调用submit提交任务则会丢弃最早加入且还未被执行的任务

ThreadPoolExecutor.DiscardPolicy          
//队列满后若继续调用submit提交任务则会丢弃最晚加入且还未被执行的任务

几种现成的线程池

java 复制代码
Executors.newCachedThreadPool().submit(() -> {});
//普通线程池,能自动扩容,不需要指定上限。无核心线程,全是非核心线程

Executors.newFixedThreadPool(2).submit(() -> {});
//固定线程数量的线程池,全是核心线程,无非核心线程

Executors.newScheduledThreadPool(2).submit(() -> {});
//附带定时器的线程池
相关推荐
学习要积极几秒前
Springboot图片验证码-EasyCaptcha
java·spring boot·后端
码云数智-园园3 分钟前
测试双雄:单元测试与集成测试的深度解析与实战指南
开发语言
故城、8 分钟前
Python进阶
开发语言·python
2401_891482179 分钟前
C++代码复杂性分析
开发语言·c++·算法
C羊驼11 分钟前
C语言学习笔记(十):操作符
c语言·开发语言·经验分享·笔记·学习
李少兄11 分钟前
企业资源计划(ERP)系统全景指南
java·前端·数据库·erp
波波七14 分钟前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
myloveasuka15 分钟前
[Java]单列集合
android·java·开发语言
南梦浅17 分钟前
全过程步骤(从零到高可用企业网络)
开发语言·网络·php
mjhcsp18 分钟前
C++ 梯度下降法(Gradient Descent):数值优化的核心迭代算法
开发语言·c++·算法