线程池在接受到30个比较耗时的任务时的状态,在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

news/2024/9/18 23:08:35/ 标签: java, html, 开发语言, juc, 线程池
htmledit_views">

目录

一、提出问题

二、解答

问题 1: 线程池在接受到30个比较耗时的任务时的状态

问题 2: 在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

总结


一、提出问题

我们首先自定义一个线程池

html" title=java>java">new ThreadPoolExecutor(10,30,60,TimeUnit.SECONDS,new LinkedBlockingQueue<>(1000),new NamedthreadFactory("myPool"));

拿着这个线程池,当这个线程池在正常工作的前提下,问两个问题:

  1. 如果这个线程池接受到了30个比较耗时的任务,这个时候线程池的 状态(或者说数据)是怎样的?
  2. 在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任 务会触发拒绝策略?

二、解答

问题 1: 线程池在接受到30个比较耗时的任务时的状态

我们先看第一个问题,在接受到30个比较耗时的任务时,线程池的状态如下:

  1. 核心线程数 (corePoolSize):10
    首先,线程池会启动10个核心线程来处理前10个任务。这些任务会立即开始执行。

  2. 任务队列 (workQueue):1000
    在核心线程已经全部被占用的情况下,剩下的任务(第11个到第30个)会被放入工作队列中。这些任务会等待直到有线程空闲。

  3. 最大线程数 (maximumPoolSize):30
    因为任务队列尚未达到其容量上限,所以线程池不会再创建新的线程来处理任务。也就是说,线程池中的线程数仍保持在10个。

  4. 线程池状态

    • 线程数:10个线程正在运行。
    • 工作队列:工作队列中有20个任务在等待执行。
    • 队列大小:队列中剩余可用空间为980(1000 - 20)。

因此,线程池在接受到30个耗时任务时,10个任务正在执行,20个任务在队列中等待。

问题 2: 在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

在前面30个比较耗时的任务还没执行完成的情况下:

  1. 工作队列 (workQueue)

    • 当前工作队列中已经有20个任务在等待,还有980个空位。
  2. 最大线程数 (maximumPoolSize):30

    • 线程池已经启动了10个核心线程,所有核心线程都在忙碌。
    • 工作队列还没有填满(容量是1000)。

因此,在此时再提交980个任务,这些任务将会被放入队列而不会触发拒绝策略。

第981个任务:当第981个任务被提交时,队列已经满了。此时,线程池将会创建新的线程来处理任务,因为还未达到最大线程数。线程池最多可以创建20个额外的线程(从10个到最大30个),这些线程会立即处理新提交的任务。

触发拒绝策略的条件:如果再提交任务使得线程池中的线程数达到了最大线程数(30个),且任务队列已满(1000个任务在等待),那么再提交第1001个任务时,就会触发拒绝策略。

总结

触发拒绝策略前:前面30个耗时任务已占据了所有核心线程和部分工作队列,队列还有980个空位。因此,接下来的980个任务可以被接受,而不会触发拒绝策略。

触发拒绝策略时:再提交的任务数使得队列满且线程数达到最大值(30个),此时再提交的任务(第1001个任务)会触发拒绝策略。


http://www.ppmy.cn/news/1519408.html

相关文章

python基本语法总结

参考&#xff1a; Python 基础语法 | 菜鸟教程 (runoob.com) Python 语言与 Perl&#xff0c;C 和 Java 等语言有许多相似之处。但是&#xff0c;也存在一些差异。 在本章中我们将来学习 Python 的基础语法&#xff0c;让你快速学会 Python 编程。 第一个Python程序 python编写…

【python】OpenCV—Multi Human Pose Estimation

文章目录 1、背景介绍2、关键点检测模型3、源码与结果4、源码解读——检测关键点5、源码解读——找到有效对6、源码解读——组装个人关键点7、涉及到的库cv2.dnn.blobFromImage 8、参考 1、背景介绍 【python】OpenCV—Single Human Pose Estimation 本文以 COCO 格式为例&am…

内存管理笔记

1、内存管理简介 在计算机系统中&#xff0c;变量、中间数据一般存放在系统存储空间中&#xff0c;只有在实际使用时才将它们从存储空间调入到中央处理器内部进行运算。通常存储空间可以分为两种&#xff1a;内部存储空间和外部存储空间。内部存储空间访问速度比较快&#xff…

中文科技核心

“中文科技核心”通常指的是在中文领域内具有重要影响力和学术价值的科技研究或出版物。这些核心期刊和论文集主要集中在自然科学、工程技术、计算机科学等领域&#xff0c;代表了该领域的前沿研究成果。以下是关于中文科技核心的一些要素和相关内容。 1. 中文科技核心期刊的定…

Transformer参数量和复杂度

在算法岗面试中经常会问到Transformer相关的基础知识。 首先需要清楚Transformer的参数量和复杂度分别在算什么。 定义&#xff1a; 参数量&#xff1a;神经网络中有很多参数矩阵&#xff0c;这个矩阵大小的和就是参数量&#xff0c;静态的&#xff0c;摆在那就在那&#xff…

通过 Filter 改写请求的 Response

通过 Filter 改写请求的 Response 1、自定义 ResponseWrapper 自定义 ResponseWrapper&#xff0c;用于获取 Response Data public class RewriteRespWrapper extends HttpServletResponseWrapper {private final ByteArrayOutputStream output;private ServletOutputStream…

华为 HCIP-Datacom H12-821 题库 (3)

有需要题库的可以看主页置顶 1.运行 OSPF 协议的路由器在交互 DD 报文时&#xff0c;会使用以下哪一个参数选举主从关系&#xff1f; A、接口的 IP 地址 B、接口的 DR 优先级 C、Area ID D、Router ID 答案&#xff1a;D 解析&#xff1a; Router-ID 大的为主&#xff0c;小的…

初爽Stream流

体验Stream流的作用&#xff1a; 需求&#xff1a; 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 要求&#xff1a; 1.把所有以“张”开头的元素存储到新集合中 2.把“张”开头的&#xff0c;长度为3的元素再存储到新集合中 3.遍历打…

Java小项目IDEA怎么打成jar包

使用IDEA打jar包 在file选项中找 打开jar包所在位置&#xff1a; 将jar包拿出来 直接点击jar包就可以运行

Linux tty模式下无法使用回滚功能解决(shift+pgup方法不管用)

Linux tty模式下无法使用回滚功能解决&#xff08;shiftpgup方法不管用&#xff09; 自从内核5.9版本以后&#xff0c;回滚功能就被取消&#xff1a;fbcon: remove soft scrollback code 此前是可以使用 Shift PageUp/PageDown 来滚动的。现在假如我们想查看屏幕以外的文字&…

算法训练营|图论第二天 99.岛屿数量 100.岛屿的最大面积

题目&#xff1a;99.岛屿数量 题目链接&#xff1a; 99. 岛屿数量 (kamacoder.com) 代码&#xff1a; 深度优先搜索&#xff1a; #include<bits/stdc.h> using namespace std; int dir[4][2] { 0,1,1,0,-1,0,0,-1 }; void dfs(vector<vector<int>>&…

MySQL唯一索引大小写敏感性问题及字符集深入解析

1. 问题背景与描述 在实际生产环境中&#xff0c;我们遇到了一个插入重复异常的问题。具体表现在长链接转换为短链接的过程中&#xff0c;生成的短链被插入数据库时触发了唯一索引的冲突错误。错误的根本原因在于数据库使用了不区分大小写的排序规则&#xff0c;导致两个看似不…

Linux下安装MySQL8.0

一、安装 1.下载安装包 先创建一个mysql目录&#xff0c;在将压缩包下载到此 # 下载tar包 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz等待下载成功 2.解压mysql8.0安装包 tar xvJf mysql-8.0.20-linux-glibc2.12-x86…

尝试用java spring boot+VUE3实现前后端分离部署

前言 这几天开学了&#xff0c;公司这边几个和学校对接的项目都挺忙的&#xff0c;然后我又开始有点闲的情况了。问大佬能不能继续看看若依的项目&#xff0c;大佬让我自己去学了。在看若依的项目的时候在想&#xff0c;python的FLASK后端实现和JAVA spring boot的实现差别大不…

【GPT】Coze使用开放平台接口-【2】创建工作流-语音伪造检测工作流

在Coze使用开放平台接口-【1】创建插件&#xff0c;我们已经成功创建了开放平台的插件&#xff0c;也创建了对应的工具。本文档就根据创建好的插件&#xff0c;来创建对应的工作流&#xff0c;来让接口能够用起来。 下面直接用现成的插件快商通AI开放平台&#xff0c;来创建语音…

深度学习实战1--决策树与随机森林(最新版本不报错)

1.乳腺癌数据集简介 乳腺癌数据集包含了美国威斯康星州记录的569个病人的乳腺癌的病情&#xff0c;包含30个维度的生理指标数据(特征),以及乳腺癌是恶性还是良性的标签。因为这是一个二分类问题&#xff0c; 也叫二类判别数据集。 2.实战任务 这数据主要包含569个样本。每个样…

【3.6】贪心算法-解救生艇问题

一、题目 第 i 个人的体重为 people[i]&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit 。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 二、解题思路 题目要求每艘船最多能载两人&…

安美数字酒店宽带运营系统-任意文件读取

漏洞描述&#xff1a; 安美数字酒店宽带运营系统 weather.php 接口存在任意文件读取漏洞&#xff0c;未经身份验证攻击者可通过该漏洞读取系统重要文件&#xff08;如数据库配置文件、系统配置文件&#xff09;、数据库配置文件等等&#xff0c;导致网站处于极度不安全状态 fo…

c++中的匿名对象及内存管理及模版初阶

目录 c中的匿名对象 日期到天数的转换 深入理解析构 深入理解拷贝构造 内存管理 全局变量和static变量的区别&#xff1b; malloc/calloc/realloc的区别 new和delete的意义&#xff1f; operator new与operator delete函数 对比malloc和new operator 定制operator ne…

OceanBase 功能解析之 Binlog Service

前言 MySQL&#xff0c;是在全球广泛应用的开源关系型数据库&#xff0c;除了其稳定性、可靠性和易用性&#xff0c;他早期推出的二进制日志功能&#xff0c;即binlog&#xff0c;也是MySQL广受欢迎的原因。 MySQL binlog&#xff0c;即二进制日志&#xff0c;是 MySQL 中用于…