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

多线程 线程池饱和策略

RejectedExecutionHandler(饱和策略):当队列和线程池都满了,说明线程池处于饱和状态,那么必须采取一种策略处理提交的新任务。

这个策略默认情况下是AbortPolicy,表示无法处理新任务时抛出异常。

在JDK 1.5中Java线程池框架提供了以下4种策略。

拒绝策略功能
ThreadPoolExecutor.AbortPolicy(默认)直接抛出RejectedExecutionException来拒绝新任务的处理。
ThreadPoolExecutor.DiscardPolicy不处理,丢弃掉。
ThreadPoolExecutor.DiscardOldestPolicy丢弃队列里最近的一个任务,并执行当前任务。
ThreadPoolExecutor.CallerRunsPolicy不进入线程池执行,任务将由调用者线程去执行。也就是直接在调用execute方法的线程中运行被拒绝的任务。
如果执行程序已关闭,则会丢弃该任务。
当最大池被填满时,此策略为我们提供 可伸缩队列
因此这种策略会降低对于新任务提交速度,影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话,你可以选择这个策略。
自定义策略以根据应用场景需要来实现RejectedExecutionHandler接口自定义策略。
如记录日志或持久化存储不能处理的任务。

-----------------------------------------------------------------------------摘自 书名:Java并发编程的艺术 作者:方腾飞;魏鹏;程晓明

http://www.lryc.cn/news/89747.html

相关文章:

  • 进程间通信之信号
  • 二分查找三道题
  • MyBatis 框架
  • 【C++】虚表和虚基表到底有哪些区别?
  • 剑指 Offer 04. 二维数组中的查找解题思路
  • 冯诺依曼体系结构详解
  • ISO证书“带标”与“不带标”的区别是什么?
  • RocketMQ 领域模型概述
  • 黄河千年清一回与人类健康
  • Android java层hook------xposed框架的使用
  • css奇淫巧计
  • Web服务器实现|基于阻塞队列线程池的Http服务器|线程控制|Http协议
  • 【C++】运算符重载(日期类的实现)
  • 【Linux】线程分离 | 线程库 | C++调用线程 | 线程局部存储
  • c++ ffmpeg 浅谈YUV444、YUV422、YUV420(2)
  • Redis在Windows下安装配置教程
  • 数据库服务器
  • VS输出路径和生成事件
  • 从 WebKit 看浏览器内核架构
  • 使用原生的 JavaScript,不依赖于任何特定的库与 ROSBridge进行通信
  • MATLAB第十章_图像处理算法
  • RobotFramework接口测试方案
  • chatgpt赋能python:Python中日期转换:从字符串到日期对象
  • k8s 1.27新特性in-place使用方法:避坑指南(官方文档有坑,已提issue)
  • 网络传输(传输介质、通信方式、交换方式)
  • 【Unity】Time.deltaTime有什么用?看完你就明白
  • vue实现用户动态权限登录
  • ONNX模型修改为自定义节点
  • 内存对齐原则
  • Java SPI 一 之SPI(Service Provider Interface)进阶 AutoService