当前位置: 首页 > news >正文

线程池理解

我们通过线程池可以实现已创建线程的复用,减少资源的消耗;控制并发的数量;以及对线程进行统一的管理。下面我会对线程池的核心参数以及常用的线程池种类进行详细的讲解。

int corePoolSize 核心线程最大数量

核心线程:

  • 线程池中有两类线程:核心线程和非核心线程。
  • 核心线程默认情况下会一直存在于线程池中,即使这个核心线程什么都不干,而非核心线程如果长时间的闲置,就会被销毁。

int maximumPoolSize 线程总数量最大值

改值等于核心线程数+非核心线程数

long keepAliveTime 非核心线程的闲置超时时间

非核心线程闲置时间超过此值就会被销毁

ThreadFactory threadFactory 线程工厂

创建线程的工厂,用于批量创建线程,如果不指定,会新建一个默认的线程工厂

  • ThreadPoolExecutor.AbortPolicy:默认拒绝处理策略,丢弃任务并抛出异常

          直接抛出RejectedExecutionException异常,阻止任务提交

‌           适用场景‌:需明确感知任务失败的场景(如支付交易、订单处理),需结合异常捕获机制告警。‌‌

       适用场景‌:容忍数据丢失的采样场景(如监控指标上报),或任务可异步重试的场景

‌        特点‌:处理开销最小,但数据丢失风险高,问题排查困难

  • ThreadPollExecutor.DiscardPolicy:丢弃新来的任务,但不抛出异常
  • ThreadPollExecutor.DiscardOldestPolicy:丢弃阻塞队列头部(最旧)的任务,然后重新尝试执行程序,(如果再次失败,重复此过程)。适合实时的新闻等

 ‌        适用场景‌:时效性强的任务(如实时消息推送),需优先处理新任务 

  • ThreadPollExecutor.CallerRunPolicy:由调用的线程去处理改任务。只适用于并发小的情况。
  •  ‌    行为‌:将任务退回给提交任务的线程(如主线程)执行,若线程池关闭则丢弃任务。‌‌适用场景‌:允许延迟的非关键任务(如日志记录),通过降低提交速度缓解线程池压力
http://www.dtcms.com/a/347804.html

相关文章:

  • CMake安装教程
  • 传统 AI 与生成式 AI:IT 领导者指南
  • 10.Shell脚本修炼手册---脚本的条件测试与比较
  • 如何查看MySQL 的执行计划?
  • 引领GEO优化服务新潮流 赋能企业数字化转型
  • 信贷模型域——信贷获客模型(获客模型)
  • AI大模型 限时找我领取
  • Transformer核心概念I-token
  • Java:对象的浅拷贝与深拷贝
  • 获取高德地图经纬度解析地址的免费API接口(无调用限制)
  • JWT实现Token登录验证
  • 任务型Agent:执行计划详细设计
  • 计算机组成原理(11) 第二章 - 存储系统的基本概念
  • Introduction to GIS ——Chapter 1(Introduction)
  • 控制建模matlab练习15:线性状态反馈控制器-④最优化控制LQR
  • 动态内存详解
  • 图、最小生成树与最短路径
  • 算法练习-最长连续序列
  • 最短路径和关键路径的算法
  • Linux学习:信号的保存
  • 【什么是大模型自注意力机制?】
  • 腾讯wxg后台开发面经
  • A Large Scale Synthetic Graph Dataset Generation Framework的学习笔记
  • JavaSpring+mybatis+Lombok,实现java架构[保姆教程]
  • KVM虚拟化:提升企业效率的利器
  • 编程刷题-P1746 离开中山路 BFS/最短路径
  • 数据结构算法:顺序表
  • 电脑零广告快响应提速(一)之卸载搜狗输入法使用RIME—东方仙盟
  • qt ElaWidgetTools第一个实例
  • linux进程调度相关头文件sched.h介绍与使用指南