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(() -> {});
//附带定时器的线程池
相关推荐
rabbit_pro16 小时前
Java使用Mybatis-Plus封装动态数据源工具类
java·python·mybatis
wjs202416 小时前
抽象工厂模式
开发语言
lly20240616 小时前
SVG 模糊效果详解
开发语言
期待のcode16 小时前
Java虚拟机类加载机制
java·开发语言
Learner16 小时前
Python运算符
开发语言·python
短剑重铸之日16 小时前
《SpringBoot4.0初识》第四篇:原生镜像
java·原生镜像·springboot4.0
程序员欣宸16 小时前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
一晌小贪欢16 小时前
Python 精确计算:告别浮点数陷阱,decimal 模块实战指南
开发语言·python·python入门·python3·python小数·python浮点数
superman超哥16 小时前
Rust 范围模式(Range Patterns):边界检查的优雅表达
开发语言·后端·rust·编程语言·rust范围模式·range patterns·边界检查
天若有情67316 小时前
打破思维定式!C++参数设计新范式:让结构体替代传统参数列表
java·开发语言·c++