JAVA中的线程池说明二

系列文章

JAVA中的线程池说明一

JAVA中的线程池说明二

目录

1.引入

2.参数解释

3.标准库中提供的四个拒绝策略


1.引入

  • java.util.concurrent 这个包里面放的很多类都是和并发编程(多线程编程)密切相关,这个包简称JUC;
  • 今天我们主要来了解Java线程池的相关知识。

2.参数解释

在这里,我们主要讲述第四个构造方法,其他方法与其类似,不再赘述。

|---------------------------------------|----------------------------------|
| 参数 | 解释 |
| int corePoolSize | 核心线程数 |
| int maximumPoolSize | 最大线程数 |
| long keepAliveTime | 描述了临时工可以摸鱼的最大时间 |
| TimeUnit unit | 时间单位(ms,s,min) |
| BlockingQueue<Runnable> workQueue ​ | 线程池任务队列 |
| ThreadFactory threadFactory ​ | 用于创建线程,线程池是需要创建线程的 |
| RejectedExecutionHandler handler ​ | 描述了线程池的"拒绝策略",即如果线程池任务队列已满,该如何处理 |

ThreadPoolExecutor 相当于将线程分为两类:

  1. 一类是正式员工(核心线程)

  2. 一类是临时工/实习生(非核心线程)

这两者之和等于最大线程数。

它允许正式员工在空闲时休息,但不允许临时工/实习生在空闲时休息太久,如果临时工/实习生长时间没有任务可做,它们将被销毁。整体策略是保证核心线程的稳定运行,同时根据需要动态调整非核心线程的数量。

3.标准库中提供的四个拒绝策略

详情

|----------------------------------------|---------------------------------|
| 名称 | 解释 |
| ThreadPoolExecutor.AbortPolicy | 如果任务较多,队列已满,抛出异常 |
| ThreadPoolExecutor.CallerRunsPolicy | 如果任务较多,队列已满,多出的任务,哪个线程添加,哪个线程处理 |
| ThreadPoolExecutor.DiscardOldestPolicy | 如果任务较多,队列已满,丢弃最早的任务 |
| ThreadPoolExecutor.DiscardPolicy | 如果任务较多,队列已满,丢弃最新任务 |

以上就是Java多线程的补充说明。

相关推荐
海南java第二人几秒前
打破Java双亲委派模型的三大核心场景与技术实现
java·spring
天天摸鱼的java工程师1 分钟前
分布式 ID 生成终极方案:雪花算法优化与高可用实现
java·后端
Evand J2 分钟前
【定位代码】复杂地磁环境下无人机自主导航增强技术研究——地磁匹配与多源数据融合方法,附matlab代码
开发语言·matlab·无人机
沛沛老爹3 分钟前
2025年java总结:缝缝补补又一年?
java·开发语言·人工智能·python·guava·总结·web转型ai
艾迪的技术之路4 分钟前
【实践】2025年线上问题解决与总结-3
java
雨中飘荡的记忆4 分钟前
MyBatis参数处理模块详解
java·mybatis
wadesir5 分钟前
高效计算欧拉函数(Rust语言实现详解)
开发语言·算法·rust
superman超哥6 分钟前
Rust 零拷贝技术应用:极致性能的内存操作艺术
开发语言·后端·rust·rust零拷贝技术·内存操作
Chloeis Syntax6 分钟前
MySQL初阶学习日记(7)--- 事务
java·数据库·笔记·学习·mysql
superman超哥7 分钟前
Rust SIMD 指令优化:数据并行的极致性能
开发语言·后端·rust·数据并行·指令优化