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(() -> {});
//附带定时器的线程池
相关推荐
计算机毕设vx_bysj6869几秒前
【免费领源码】77196基于java的手机银行app管理系统的设计与实现 计算机毕业设计项目推荐上万套实战教程JAVA,node.js,C++、python、大屏数据可视化
java·mysql·智能手机·课程设计
忘梓.几秒前
墨色规则与血色节点:C++红黑树设计与实现探秘
java·开发语言·c++
hhh3u3u3u1 分钟前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
星河耀银海4 分钟前
C++ 模板进阶:特化、萃取与可变参数模板
java·开发语言·c++
cccccc语言我来了8 分钟前
【C++---unordered_set/map底层封装】个不拘一格的集合。它不似有序集合那般循规蹈矩,而是以一种洒脱不羁的方式,将元素们随意地散落其中。每一个元素都是独一无二的。
开发语言·c++·哈希算法
Zfox_8 分钟前
C++ IO流全解析:标准库中的数据处理与文件读写艺术
开发语言·c++
加号38 分钟前
【C#】实现沃德普线光控制器通信控制(附完整源码)
开发语言·c#
格鸰爱童话21 分钟前
向AI学习项目技能(五)
java·学习
程序员萌萌23 分钟前
Java之mysql实战讲解(三):聚簇索引与非聚簇索引
java·mysql·聚簇索引
天若有情67333 分钟前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串