线程池底部工作原理

server/2025/1/16 16:38:47/

线程池内部是通过线程和队列实现的,当我们通过线程池处理任务时:

如果线程池中的线程数量小于corePoolSize,无论是否有处于空闲的线程,都创建新的线程来处理被添加的任务。

如果线程池中的线程数量等于corePoolSize,缓冲队列workQueue未满,则将被添加的任务放入缓冲队列。

如果线程池中的线程数量大于等于corePoolSize,缓冲队列workQueue已满,但是线程数量小于maximumPoolSize,那么创建新的线程来处理被添加的任务。

如果线程池中的线程数量大于corePoolSize,缓冲队列workQueue已满,并且线程数量等于maximumPoolSize,那么通过handler指定的策略来处理被添加的错误。

如果线程池中的线程数量大于corePoolSize,当线程空闲时间大于keepAliveTime,就将这个线程终止,这样线程池就可以动态调整池中线程数量。

线程池为什么先添加队列而不是先创建最大线程?

当线程池中的核心线程都在忙时,如果继续往线程池中添加任务,那么队伍会先放入队列,队列满了之后才会新开线程。这就相当于,一个公司有10名程序员,本来这10名程序员就能正常处理业务,但随着公司发展,业务量慢慢增加,但是一开始这些需求只会增加在待开发列表中,然后10个程序员加班加点的从待开发列表中获取并进行处理,直到某天开发列表满了,公司现有的程序员真的处理不过来了,所以就开始招员工了。


http://www.ppmy.cn/server/158864.html

相关文章

centos安装golang

1.下载golang golang所有版本网址 https://studygolang.com/dl //下载并解压到/usr/local文件下 wget https://studygolang.com/dl/golang/go1.18.3.linux-amd64.tar.gz //解压并复制到/user/local文件夹下 tar -C /usr/local -zxf go1.18.3.linux-amd64.tar.gz 2.编辑环境变…

SQL正则表达式用法大全以及如何利用正则表达式处理复杂数据

正则表达式用法大全 在SQL中,正则表达式通常用于模式匹配,以便搜索、替换或验证数据。不同的SQL数据库管理系统(DBMS)支持不同的正则表达式功能。以下是常见的SQL中正则表达式的用法和相关功能: 1. MySQL 正则表达式 …

unity——Preject3——UI管理器

目录 1.canvas Canvas 的主要功能 Canvas 的组件 Canvas 的渲染模式 Canvas 的使用步骤 Match 的作用 Match 的工作原理 如何选择合适的 Match 值 示例 总结 EventSystem 的作用 EventSystem 和 Canvas 的关系 EventSystem 的组件 EventSystem 的工作流程 2.代码…

ffmpeg视频总帧数获取,取某一帧的图像方法

FFmpeg的Static版本的bin文件夹中只有三个.exe文件,分别是:ffmpeg.exe,ffplay.exe和ffprobe.exe,各功能如下: ffmpeg.exe:音视频转码、转换器 ffplay.exe:简单的音视频播放器 ffprobe.exe&am…

【数据结构-堆】力扣1792. 最大平均通过率

一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。给你一个二维数组 classes ,其中 classes[i] [passi, totali] ,表示你提前知道了第 i 个班级总共有 totali 个学生,其中只有 passi 个学…

qBittorent访问webui时提示unauthorized解决方法

现象描述 QNAP使用Container Station运行容器,使用Docker封装qBittorrent时,访问IP:PORT的方式后无法访问到webui,而是提示unauthorized,如图: 原因分析 此时通常是由于设备IP与qBittorrent的ip地址不在同一个网段导致…

【汇编】汇编编程中的指令传参方式

1. 指令传参方式 汇编指令传参有2种方式。 第一种是常见的 操作数传参,如: move ax, bx第二种是,绑定寄存器传参。有的指令在调用时,虽然不需要操作数,但是它会默认使用某几个寄存器,调用时需要提前将寄…

【Vue3 入门到实战】3. ref 和 reactive区别和适用场景

目录 ​编辑 1. ref 部分 1.1 ref定义基本数据类型 1.2 ref 定义引用数据类型 2. reactive 函数 3. ref 和 reactive 对比 3.1 原理 3.2 区别 3.3 使用原则 在 Vue 3 中 ref 和 reactive 是用于创建响应式数据的两个核心函数。它们都属于 Composition API 的一部分&…