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(() -> {});
//附带定时器的线程池
相关推荐
失散13几秒前
分布式专题——2 深入理解Redis线程模型
java·数据库·redis·分布式·架构
王伯安呢29 分钟前
Java开发环境配置入门指南
java·开发语言·jvm·eclipse·环境搭建·新手
·前路漫漫亦灿灿32 分钟前
C++-类型转换
开发语言·c++
Kyln.Wu1 小时前
【python实用小脚本-205】[HR揭秘]手工党逐行查Bug的终结者|Python版代码质量“CT机”加速器(建议收藏)
开发语言·python·bug
计算机毕业设计木哥1 小时前
Python毕业设计推荐:基于Django的饮食计划推荐与交流分享平台 饮食健康系统 健康食谱计划系统
开发语言·hadoop·spring boot·后端·python·django·课程设计
rockmelodies1 小时前
Java安全体系深度研究:技术演进与攻防实践
java·开发语言·安全
OEC小胖胖1 小时前
Next.js 介绍:为什么选择它来构建你的下一个 Web 应用?
开发语言·前端·web·next.js
代码栈上的思考1 小时前
深入解析 Java 内存可见性问题:从现象到 volatile 解决方案
java·开发语言
切糕师学AI1 小时前
如何建立针对 .NET Core web 程序的线程池的长期监控
java·前端·.netcore
零千叶2 小时前
【面试】AI大模型应用原理面试题
java·设计模式·面试