Java线程池

devtools/2025/3/1 23:29:34/

(一)线程池的优势

  总的来说,池化技术都有以下几个优势

1.降低资源消耗:减少了我们频繁地去创建和销毁线程

2.提高响应速度:当任务到达时,任务不需要等待线程的创建,直接拿到一个线程就可以响应

3.便于管理:我们通过线程池统一的去管理我们所有线程,进行统一分配,调优和监控

(二)线程池参数

我们来看一下每个参数都是什么意思

corePollSize(核心线程数):表示我们线程池最少有多少个线程,默认情况下,这些线程是一直存在的。只有达到了核心线程数再来一个任务我们才放到任务队列

maximumPoolSize(最大线程数):表示我们线程池最多能有几个线程,只有当我们任务队列满了,我们才去突破核心线程数,但是线程数要小于最大线程数

keepAliveTime(最大空闲时间):线程池中的非核心线程最大能空闲多久就要被回收

unit(最大空闲时间的单位):指定keepAliveTime的时间单位

wordQueue(任务队列):通过线程池execute()方法提交的任务存储在该参数中,采用阻塞队列实现

threadFactory(线程工厂):一个创建线程的工厂

handler(拒绝策略):  有以下四种

1)AbortPolicy():超出多大线程数,直接抛出异常

2)CallerRunsPolicy():调⽤者负责处理多出来的任务.

3)DiscardOldestPolicy():丢弃队列中最⽼的任务.

4)DiscardPolicy():丢弃新来的任务.

(三)线程池的工作原理

我们用一张图表示

(四)任务队列(workQueue)

任务队列是通过阻塞队列实现的,我们大概分为两种一种是有界队列,一种是无界队列

有界队列:防内存溢出,所以有拒绝策略,也就是我们上面说的拒绝策略

无界队列:任务队列可以一直添加任务,知道内存耗尽,所以此时的最大线程数就没有意义了

那Java给我们提供了7种,我们大概了解一下就可以

(五)线程池的种类

1.定长线程池(FixThreadPool):线程池中线程数量固定,只有核心线程,当所有线程都在忙,任务就会在队列中等待

  适用场景:控制线程最大并发数 

2.定时线程池(ScheduledThreadPool):核心线程数固定,但是非核心线程数无限,执行完闲置10ms后进行回收

适用场景:执行定时或者周期性任务

3.可缓存线程池(CachedThreadPool):没有核心线程,非核心线程数无限,也就是线程池大小动态调整,线程空闲60s后被回收

适用场景:执行大量,耗时少的任务

4.单线程化线程池(SingleThreadExcutor):只有一个核心线程,没有非核心线程,执行完就回收

适用场景:不适合并发但是可能引起IO阻塞的操作


http://www.ppmy.cn/devtools/163757.html

相关文章

SQL Server2019安装步骤+使用+解决部分报错+卸载(超详细 附下载链接)

1、下载安装SQL Server2019 第一步:官网下载安装包SQL Server 2019 - 定价 | Microsoft 【以下内容图片借用SQL Server2019安装步骤(超详细 附下载链接) - 掘金中内容】 第二步:打开安装包,并选择基本. 第三步&#…

Docker迁移/var/lib/docker之后镜像容器丢失问题

迁移/var/lib/docker时,如果目标目录少写一个/,/etc/docker/daemon.json中的data-root后面需要多加一级目录docker。 若迁移命令如下 rsync -avz /var/lib/docker /home/docker/ 在/etc/docker/daemon.json中添加如下内容 "data-root": &q…

win11本地部署deepseek大模型(安装ollama+docker+open-webui)最终实现自己的项目可通过API调用投喂数据后的模型

硬件配置:笔记本win11,内存32G,CPU锐龙7 ,无独显;只能考虑deepseek-r1:1.5b模型。 第一步:安装Ollama 此处不过多累赘了,https://ollama.com/官网选择对应的系统版本下载即可。 需要注意的是…

【PCIe 总线及设备入门学习专栏 10.1 -- Linux PCIe 驱动框架 之 RK3399 Region1 访问】

文章目录 CPU 读写 region 0 的地址MEM/IO 读写示例配置 Region1 用于内存读写配置 Region 1 地址转换Region 1 地址访问desc registersCPU 读写 region 0 的地址 本篇文章紧接【PCIe 总线及设备入门学习专栏 10 – Linux PCIe 驱动框架】 由【PCIe 总线及设备入门学习专栏 1…

【 实战案例篇三】【某金融信息系统项目管理案例分析】

大家好,今天咱们来聊聊金融行业的信息系统项目管理。这个话题听起来可能有点专业,但别担心,我会尽量用大白话给大家讲清楚。金融行业的信息系统项目管理,说白了就是如何高效地管理那些复杂的IT项目,确保它们按时、按预算、按质量完成。咱们今天不仅会聊到一些理论,还会通…

基于大数据的空气质量数据可视化分析系统

【大数据】基于大数据的空气质量数据可视化分析系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本系统的实践价值在于将大数据技术与空气质量监测相结合,为公众、研究机构和政府…

Django+Vue+数据可视化的网络考试与测评系统(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 本网络考试与测评系统是信息技术与教育测评领域深度融合的创新成果。它基于先进的 Djang…

YOLOv8车牌关键点定位与矫正识别系统

文章目录 研究背景一、效果演示1.0 项目获取1.1 图像识别1.2 视频识别1.3 摄像头识别 二、技术原理2.1 整体流程2.2 CCPD数据集介绍2.3 车牌定位2.4 车牌矫正2.5 车牌识别2.5.1 CRNN概述2.5.2 CRNN网络架构实现2.5.3 CNN结构2.5.4 RNN结构 环境配置安装教程与资源说明 参考文献…