线程池 (重点)概述7大参数理解

news2025/1/12 21:08:17

目录

1、线程池思想概述

2、什么是线程池?

3、不使用线程池的问题

4、线程池的工作原理

5、线程池实现的API、参数说明

 5.1、谁代表线程池?

 5.2、如何得到线程池对象

 5.3、ThreadPoolExecutor构造器的参数说明

 6、线程池常见面试题

 6.1、临时线程什么时候创建啊?

 6.2、什么时候会开始拒绝任务?


1、线程池思想概述

                我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:

如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为 频繁 创建线程销毁线程 需要时候。

那么有没有一种方法使得线程可以复用,就是执行完一个任务,并不会被销毁,而是可以继续执行其他的任务有?

在Java中可以通过线程池来达到这样的效果。

2、什么是线程池?

  • 线程池就是一个可以 复用线程的技术

3、不使用线程池的问题

  • 如果用户每发起一个请求,后台就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。

4、线程池的工作原理

  • 核心线程:长久存活的线程

5、线程池实现的API、参数说明

 5.1、谁代表线程池?

  • JDK5.0起提供了代表线程池的接口:ExecutorService

 5.2、如何得到线程池对象

  • 方式一:使用ExcutorService的实现类ThreadPoolExecutor自创建一个线程池对象 
  • 方式二:使用Executors(线程池的工具类)调用方法返回不同特点的线程池对象

 5.3、ThreadPoolExecutor构造器的参数说明

  • 参数一:corePoolSize:指定线程池的线程数量(核心线程)长久不死亡的线程:不能小于0,线程池运行稳定时的数量,就是正式工的数量
  • 参数二:maximumPoolSize:指定线程池可支持的最大线程数:最大数量 >= 核心线程数量,假设核心线程的数量是3,最大线程数量是10,意味着最多支持10个线程,有3个线程是不死的,7个线程用完之后可能会把它销毁掉 。最大线程数包含了核心线程数。
  • 参数三:keepAliveTime:指定 临时线程 的最大存活时间:不能小于0,这个临时线程就是刚刚多出来的7个线程,相当于零时工  。
  • 参数四:unit:指定存活时间的单位(秒、分、时
  • 参数五:workQueue:指定任务队列:不能为null,假设线程都满啦,假设最大10个线程都在忙,都在处理任务,那么新的任务来了,第11个任务过来的时候,它可以进到这个任务队列里,缓存起来,到时候还要处理  。任务阻塞队列,当核心线程不能及时处理任务时,任务会存在任务队列中。
  • 参数六:threadFactory:指定用哪个线程工厂创建线程:不能为null,
  • 参数七:handler:指定线程忙,任务满的时候,新任务来了怎么办:不能为null,比如现在最多10个线程,然后任务队列里面最多可以排5个任务,最多支持5个任务,10个线程已经都在忙,任务队列最多缓存5个任务,任务队列也已经满,10个线程处理10个任务,任务队列还有5个任务,所以第16个任务过来的时候怎么办?应该怎么拒绝第16个任务,配置拒绝策略,抛出异常或者不处理。当线程数达到最大线程数,任务阻塞队列已满,新的任务不能被接受处理时,拒接处理器 会拒绝本次任务。
  •  生活例子解释7个参数:就像ktv,如果不用线程池,来一个客人招一个服务员,服务员是线程,突然来了500个客人,不可能招500个服务员,导致大量资源浪费,挣得钱还不够支付服务员的工资,正常ktv会招几个正式工,比如招3个正式工,3个正式工正常不会辞职,会一直服务,客人就是任务。
  1. corePoolSize:核心线程就是    3个    正式工
  2. maximunPoolSize:最大线程数 就是   3个正式工   +   7个零时工   =  10个最大线程数(员工)
  3. keepAliveTime7个零时工 工作的 时间,过个这个时间就会被开除,但是3个正式工不会被开除
  4. unit:7个零时工工作时间的单位,工作多少秒、多少分、多少小时、多少天离职
  5. workQueue: ktv门口的那排5个座位,可以理解为ktv现在所有的房间都满了,没有空房间可以使用,这些客人需要等待,这些 等待的客人 就是任务
  6. threadFactory:可以理解为招人的人力资源部门,专门负责招人的,负责招 3个正式工 和  7个临时工
  7. hander:可以理解为现在ktv的所有房间都已经满了,10个员工都在服务这些客人,外面的5个等待座位也已经满了,此时来了第16波客人,我们应该采取什么措施去拒绝第16个任务

 6、线程池常见面试题

 6.1、临时线程什么时候创建啊?

  • 新任务提交时发现核心线程都在忙,任务队列也满了,并且还可以创建临时线程,此时才会创建临时线程。
  • 核心线程不足,都在使用,没有空闲的,任务队列也已经满了,处理新的任务时会创建扩展线程处理。

 6.2、什么时候会开始拒绝任务?

  • 核心线程和临时线程都在忙,任务队列也满了,新的任务过来的时候才会开始任务拒绝。

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

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

相关文章

Vue + Asp.NET调试时出现的证书问题 (OpenSSL)

Vue Asp.NET调试时出现的证书问题 1. 证书过期问题步骤一:创建新的私钥步骤 2: 创建新的证书签名请求(CSR)步骤 3: 使用 CSR 和 CA 私钥签署新证书步骤 4: 替换或使用新证书 2. 证书不受信任问题步骤: 3. 安全证书不指定使用者可选名称步骤一: 删除已生…

java实现文件的压缩及解压

一、起因 开发中需要实现文件的压缩及解压功能,以满足某些特定场景的下的需要,在此说下具体实现。 二、实现 1.定义一个工具类ZipUtils,实现文件的压缩及解压,代码如下: import java.io.*; import java.nio.charset.Charset; impo…

网络安全等级保护基本要求 第1部分:安全通用要求

基本要求 第三级 安全物理环境 物理位置选择 a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内; b) 机房场地应避免设在建筑物的顶层或地下室,否则应加强防水和防潮措施 物理访问控制 a) 机房出入口应配置电子门禁系统,控制、鉴…

Linux 基本指令3

date指令 date[选项][格式] %Y--年 %m--月 %d--日 %H--小时 %M--分 %S--秒 中间可用其他符号分割,不能使用空格。 -s 设置时间,会返回设置时间的信息并不是改变当前时间 设置全部时间年可用-或者:分割日期和时间用空格分隔&#xff…

自动驾驶场景下TCP协议参数优化调整案例分享

RTT 往返时间,从tcp协议栈决定发包,到收到回包的时间。 包含本地驱动,网卡硬件,网线,交换机,收包方处理的耗时。需注意如果开了delayed ack,协议栈未做特殊处理(默认没做&#xff…

攻防演练之-成功的钓鱼邮件溯源

书接上文,《网络安全攻防演练风云》专栏之攻防演练之-网络安全产品大巡礼二,这里。 演练第一天并没有太大的波澜,白天的时间过得很快。夜色降临,攻防演练中心内的灯光依旧明亮。对于网络安全团队来说,夜晚和白天并没有…

基于STM32和人工智能的智能家居监控系统

目录 引言环境准备智能家居监控系统基础代码实现:实现智能家居监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能家居环境监控与管理问题解决方案与优化收尾与总结 1. 引言 随着智能家居技术的发展&…

如何从微软官方下载Edge浏览器的完整离线安装包

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 正文内容 📒🚀 官方直链下载🚬 手动选择下载🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网上搜索Microsoft Edge浏览器的离线安装包时,很多用户都会发现大部分都是在线安装包,无法满足他们在无网络环境下进…

【日常记录】【vue】vite-plugin-inspect 插件的使用

文章目录 1、vite-plugin-inspect2、安装3、使用4、链接 1、vite-plugin-inspect vite-plugin-inspect 可以让开发者在浏览器端就可以看到vue文件编译后的代码、vue文件的相互依赖关系 2、安装 npm i -D vite-plugin-inspect// vite.config.ts import Inspect from vite-plugi…

基于STM32的简易智能家居设计(嘉立创支持)

一、项目功能概述 1、OLED显示温湿度、空气质量,并可以设置报警阈值 2、设置4个继电器开关,分别控制灯、空调、开关、风扇 3、设计一个离线语音识别系统,可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上 4、OLED实时显示&#…

Nginx06-rewrite模块详解与实验

目录 写在前面Nginx06nginx rewriterewrite 模块return案例01 访问/admin/ 返回403案例02 域名间跳转 if案例03 只允许GET、POST请求,其他禁止访问 set案例04 设置是否处于维护状态,是则返回503,否则正常访问 rewrite案例05 域名跳转案例06 r…

htb_Blurry

端口扫描 8 按照教程注册安装clear ml 加载configuration的时候会报错 将json里的API,File Store的host都添加到/etc/hosts中 即可成功初始化 查找clear ml漏洞 发现一个cve-2024-24590 下面是一个利用脚本,但不能直接用 ClearML-vulnerability-e…

5G消息 x 融媒 | 媒体融合新入口

5G消息 x 融媒 | 媒体融合新入口 5G 消息是 5G 时代三大运营商联合手机厂商推出的平台型应用,5G 消息以短信为入口,以富媒体消息为媒介,具有权威真实、全面覆盖、精准投放、内容汇聚、开放共享等特点。这些特点符合当下融媒体发展的需求&…

ubuntu下使用cmake编译opencv4.8.0+ffmpeg4.2.2+cuda11.1

1.源码下载 (1)下载ffmpeg4.2.2、opencv4.8.0源码,这里提供一个百度网盘地址: 链接:https://pan.baidu.com/s/1pBksr0_RtKL0cM6Gsf2MGA?pwdcyai 提取码:cyai (2)解压所有文件 例…

c++实现二叉搜索树(上)

宝贝们,好久不见,甚是想念🤗小吉断更了差多有10多天,在断更的日子里,小吉也有在好好学习数据结构与算法,但是学的并不多而且学的并不是很认真。主要是中途笔记本屏出现问题了(这件事有点让小吉我…

迅狐短视频矩阵管理系统核心功能

一、多平台管理:连接多个主流自媒体平台,满足多平台、多账号、多角色的协调需求 在现如今的多元化媒体环境中,一个优秀的内容创作者需要同时管理多个自媒体平台,并以不同的身份角色展现自己。迅狐短视频矩阵管理系统强大的多平台…

RPC(远程过程调用):技术原理、应用场景与发展趋势

摘要: RPC(Remote Procedure Call)是一种通信协议,用于实现跨网络的进程间通信。它提供了一种简单高效的方式,使得分布式系统中的不同组件能够像调用本地函数一样调用远程函数。本篇博客将介绍RPC的基本概念&#xff0…

kafka 快速上手

下载 Apache Kafka 演示window 安装 编写启动脚本,脚本的路径根据自己实际的来 启动说明 先启动zookeeper后启动kafka,关闭是先关kafka,然后关闭zookeeper 巧记: 铲屎官(zookeeper)总是第一个到,最后一个走 启动zookeeper call bi…

虚拟声卡实现音频回环

虚拟声卡实现音频回环 一、电脑扬声器播放声音路由到麦克风1. Voicemeeters安装设置2. 音频设备选择 二、回声模拟 一、电脑扬声器播放声音路由到麦克风 1. Voicemeeters安装设置 2. 音频设备选择 以腾讯会议为例 二、回声模拟 选中物理输入设备“Stereo Input 1”和物理输出设…

浅谈内联钩取原理与实现

前言 导入地址表钩取的方法容易实现但是存在缺陷,若需要钩取的函数不存在导入地址表中,那么我们就无法进行钩取,出现以下几种情况时,导入函数是不会存储在导入地址表中的。 延迟加载:当导入函数还没调用时&#xff0…