【JUC】线程池有哪 4 种拒绝策略?

news2024/11/30 12:46:00

在这里插入图片描述
第一种拒绝策略是 AbortPolicy,这种拒绝策略在拒绝任务时,会直接抛出一个类型为 RejectedExecutionException 的 RuntimeException,让你感知到任务被拒绝了,于是你便可以根据业务逻辑选择重试或者放弃提交等策略。

第二种拒绝策略是 DiscardPolicy,这种拒绝策略正如它的名字所描述的一样,当新任务被提交后直接被丢弃掉,也不会给你任何的通知,相对而言存在一定的风险,因为我们提交的时候根本不知道这个任务会被丢弃,可能造成数据丢失。

第三种拒绝策略是 DiscardOldestPolicy,如果线程池没被关闭且没有能力执行,则会丢弃任务队列中的头结点,通常是存活时间最长的任务,这种策略与第二种不同之处在于它丢弃的不是最新提交的,而是队列中存活时间最长的,这样就可以腾出空间给新提交的任务,但同理它也存在一定的数据丢失风险。

第四种拒绝策略是 CallerRunsPolicy,相对而言它就比较完善了,当有新任务提交后,如果线程池没被关闭且没有能力执行,则把这个任务交于提交任务的线程执行,也就是谁提交任务,谁就负责执行任务。这样做主要有两点好处。

  • 第一点新提交的任务不会被丢弃,这样也就不会造成业务损失。
  • 第二点好处是,由于谁提交任务谁就要负责执行任务,这样提交任务的线程就得负责执行任务,而执行任务又是比较耗时的,在这段期间,提交任务的线程被占用,也就不会再提交新的任务,减缓了任务提交的速度,相当于是一个负反馈。在此期间,线程池中的线程也可以充分利用这段时间来执行掉一部分任务,腾出一定的空间,相当于是给了线程池一定的缓冲期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT自动生成大厨菜谱

大厨菜谱 最近几年,越来越多年轻人也开始尝试自己在家做菜吃饭,而不仅仅是外出就餐或点外卖。有些人可以向长辈讨教做菜心得,有些人则开始尝试从互联网搜索学习菜谱。著名的"下厨房" App,就是针对这个需求应运而生的。…

华为许超:伙伴成功,才有华为企业业务成功

伙伴,可以说是今年ICT行业最为重要的词。各大厂商都在强调伙伴优先,发力伙伴体系构建。然而行业内更多是厂商单维度的信息释放,重视强调厂商面向伙伴的支持与赋能。这个过程中,似乎普遍缺少一个视角:那就是伙伴究竟需要…

美团一面:Spring Cloud 如何构建动态线程池?

美团一面:Spring Cloud 如何构建动态线程池? 说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如美团、极兔、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:…

最强linux抓包工具优劣势对比分析

ngrep 核心参数 参数名称参数介绍-q禁止在屏幕上输出匹配行-d定义网络接口,可以多次使用-W设置缓冲区大小,单位为MB,默认为2MB-n不解析ASCII数据-i设置网络接口,与-d参数相同-P将解析的协议名称作为输出的一部分-t显示时间戳-O输出…

Linux——线程1

背景知识 堆区细粒堆划分 我们在申请堆空间时,我们只是设置了空间大小,并未设置空间从哪里结束。 堆区里面的详细信息,如某段空间从哪开始,从哪结束,由vm_area_struct负责记录,每申请一段空间就增加一个vm_…

优于FCOS:在One-Stage和Anchor-Free目标检测中以最小的成本实现最小的错位(代码待开源)...

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 与基线FCOS(一种单阶段和无锚目标象检测模型)相比,新提出的模型…

STL-map容器

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C基本数据类型(int、double 等)、使用结构体或类自定义的类型。…

IDEA中java文件出现黄色的J文件同时maven项目导入了依赖但是idea依赖加不进去的问题记录

IDEA导入项目后依赖jar包没有显示 报错提示尝试的解决方法检查对应的sdkmodule等配置信息开始尝试是不是版本问题,因为对上述maven报错进行查询,好像是因为版本太高导致的,开始下一个低版本进行尝试切换版本即可解决 总结后续出现的BUG 此次环…

Linux基本指令(三)

Linux基本指令 一.data指令1.基本使用2.时间戳 二.cal指令三.find指令四.grep指令五.zip/unzip指令六.tar指令(打包/解包,不打开直接看内容)七.bc指令八.uname指令九.几个重要热键十.关机 一.data指令 1.基本使用 下面不需要记住&#xff0c…

nodejs+Vue+elementui农家乐管理系统系统-住宿-美食-活动报名系统vue

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 目 录 管理员在还可以进行首页、个人中心、农家乐管理、美食信息管理、住宿信息管理、活动信息管理、用户管理、活动报名管理、客房预…

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二 引言🍉句1: Fast loud music is popular with many people .成分划分爆破语调 🍉句2: They may say the music is red hot, especially the kind called Dixieland jazz.成分划分爆破语调 &a…

Ae 入门系列之十二:三维合成

在 Ae 中,可以将图层设置为 3D 图层并添加动态的摄像机和灯光,从而制作基于三维空间的动画。 ◆ ◆ ◆ 二维与三维 二维 2D 在一个平面上的内容就是二维。只有上下、左右两个方向,没有前后。即,只有面积,没有体积。 …

FX DocuCentre S2520~~富士施乐 DocuCentre S2520和2022打印机驱动安装

先确定打印机IP 1. 12楼打印机IP 13楼 2楼 192.168.20.251 192.168.20.252 192.168.10.252 2. 下载安装驱动 2520富士施乐 DocuCentre S2520 驱动下载 - 驱动天空 (drvsky.com) 2022富士施乐 DocuCentre SC2022 驱动下载 - 驱动天空 (drvsky.com) 3. 添加驱动配置 安装驱动配…

解决问题,是管理者最了不起的才华

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 小C和小Y是K哥下面的两个主管,都管着10多人的团队,但他们带队伍的风格完全不同。小C名校毕业,理论基础扎实,彼得德鲁克、约翰科特的管理思想&#xff0c…

如何解决过度拟合

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

Ae:合成查看器 - 3D 视图选项

当启用 3D 图层后,合成查看器右下方将出现与 3D 视图相关的按钮与菜单。 草图 3D Draft 3D 启用后,Ae 将使用 GPU 加速来实时显示对 3D 设计所做的更改或更新。这种体验无缝流畅且速度更快,因此可避免在预览时发生延迟,使用任意摄…

Java原型模式详解:克隆人案例【深浅克隆】

前言 在许多情况下,我们需要创建对象的副本,比如在初始化操作比较复杂或者需要大量资源的情况下。在这些情况下,我们可以使用原型模式来避免重复创建对象,提高程序的性能。本文将介绍Java中的原型模式以及如何在实际应用中使用它。…

js中new的含义

👉js中new操作符_js new_焦会理人的博客-CSDN博客 目录 1.什么是new? 2.new经历了什么过程? 3.new的过程分析 1.什么是new? 在JS中,new的作用是通过构造函数来创建一个实例对象(和普通函数不一样,当函数用作构造函…

漏洞扫描与渗透测试的区别

在网络安全领域中,漏洞扫描和渗透测试是两个非常重要的概念。渗透测试和漏洞挖掘的区别在于测试的目的和方法。渗透测试主要是为了发现已知漏洞,而漏洞挖掘主要是为了发现未知漏洞。虽然它们都与漏洞有关,但它们之间还是有一定的区别。那么渗…

机器学习:基于Kmeans聚类算法对银行客户进行分类

机器学习:基于Kmeans聚类算法对银行客户进行分类 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞&#x…