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(() -> {});
//附带定时器的线程池
相关推荐
vortex521 小时前
Bash 替换机制(三):变量替换
linux·开发语言·bash
奇树谦21 小时前
Qt QDockWidget 深度解析:从基础使用到可保存布局的工程级主界面
开发语言·qt
秦苒&21 小时前
【C语言】详解数据类型和变量(一):数据类型介绍、 signed和unsigned、数据类型的取值范围、变量、强制类型转换
c语言·开发语言·c++·c#
我爱学习_zwj21 小时前
动态HTTP服务器实战:解析请求与Mock数据
开发语言·前端·javascript
降临-max21 小时前
JavaWeb企业级开发---Ajax、
java·ajax·maven
NMBG2221 小时前
外卖综合项目
java·前端·spring boot
小徐Chao努力21 小时前
Spring AI Alibaba A2A 使用指南
java·人工智能·spring boot·spring·spring cloud·agent·a2a
梅孔立21 小时前
【实用教程】python 批量解析 EML 邮件文件 存成txt ,可以利用 AI 辅助快速生成年终总结
开发语言·python
rannn_11121 小时前
【Git教程】概述、常用命令、Git-IDEA集成
java·git·后端·intellij-idea
我家领养了个白胖胖21 小时前
向量化和向量数据库redisstack使用
java·后端·ai编程