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(() -> {});
//附带定时器的线程池
相关推荐
nice_lcj5201 分钟前
排序(4)-归并排序专题——归并排序的分治美学
java·数据结构·算法·排序算法
阿正的梦工坊3 分钟前
【Rust】20-Rust 编译器架构与 MIR/LLVM 优化管线
开发语言·架构·rust
在放️4 分钟前
Python 爬虫 · XML、xpath 与 lxml 模块基础
开发语言·爬虫·python
我登哥MVP4 分钟前
SpringCloud 核心组件解析:服务调用和负载均衡
java·spring boot·后端·spring·spring cloud·java-ee·负载均衡
插件开发4 分钟前
英伟达cuda程序通用性关键 geforce 20xx代到最新版 在20xx上编译的c++程序可以通用吗?
java·c++·人工智能
我要打打代码5 分钟前
C# 扩展方法
开发语言·c#
JackSparrow4146 分钟前
彻底理解Java NIO(三)Java实现 I/O多路复用+Reactor模式及开源框架代码解读
java·c语言·开发语言·后端·nio·reactor模式
程序员黑豆6 分钟前
AI全栈开发 - Java:数据类型
java·前端
曹牧8 分钟前
Java:Xml中的大、小于
java·开发语言
zavoryn9 分钟前
Jackson 序列化踩坑:LocalDateTime、Long 精度丢失和 boolean isXxx 字段
java·开发语言·后端