当前位置: 首页 > article >正文

【Java-线程池】

目录

什么是线程池:

线程池七大参数:

参数详细介绍:

1.核心线程数:

2.最大线程数:

3.线程存活时间:

4.时间单位:

5. 阻塞工作队列:

6.线程工厂:

7.拒绝策略:

线程池的执行流程:

线程池的常用方法:

线程池分类:

线程池的状态:

​编辑


什么是线程池:

        简单来说,线程池就是帮助我们创建并管理多个线程。

        线程池(Thread Pool)是一种基于池化技术的多线程处理形式,用于管理线程的创建和生命周期,以及提供一个用于并行执行任务的线程队列。线程池的主要目的是减少在创建和销毁线程时所花费的开销和资源,提高程序性能,同时也提供了对并发执行任务的更好管理,例如控制线程数量。

线程池七大参数:

以ThreadPoolExecutor举例,线程池七大参数:1.核心线程数 2.最大线程数 3.线程存活时间 4.时间单位 5. 阻塞工作队列 6.线程工厂 7.拒绝策略。

参数详细介绍:

1.核心线程数:

        线程池中能维护的最小线程数量,即使它们处于空闲状态也不会被回收,这样保证当新任务到来时能够快速进行响应。

2.最大线程数:

        线程池允许创建的最大线程数(包含核心线程)。

3.线程存活时间:

        非核心线程的存活时间(核心线程不会回收),当非核心线程的空闲时间大于存活时间就会被回收。

4.时间单位:

        线程存活时间的时间单位(eg.TimeUnit.SECONDS 秒)

5. 阻塞工作队列:

        用于存储待执行的任务。

6.线程工厂:

        用于创建线程,以及自定义线程名称,需要实现ThreadFactory接口。

7.拒绝策略:

        当线程池线程内部的线程耗尽,并且工作队列达到已满时,新提交的任务将使用拒绝策略进行处理。

线程池的执行流程:

线程池的常用方法:

void execute(Runnable command):提交线程任务

Future<T> submit(Callable<T> task):提交线程任务,可以获取线程执行结果

void shutdown():将线程池中的线程任务执行完毕后,关闭线程池

List<Runnable> shutdownNow():立刻关闭线程池,并返回未完成的线程任务

线程池分类:

        通过实现不同方法对象分类

FixedThreadPool:固定大小线程池,线程数量固定,不会自动扩容或缩容。

CachedThreadPool:缓存线程池,线程数量不固定,根据需要自动扩容或缩容。适用于执行大量短时间任务的场景。

SingleThreadPool:单线程线程池,只有一个线程在工作,保证任务按顺序执行。

ScheduledThreadPool:定时任务线程池,用于执行定时任务和周期性任务。

线程池的状态:

RUNNING

运行状态:接受新任务,持续处理任务队列里的任务

SHUTDOWN

不再接受新任务,要处理任务队列里的任务

STOP

不再接受新任务,也不再处理任务队列里的任务,中断正在执行的任务

TIDYING

表示线程池正在停止运行,终止所有任务,销毁所有工作线程,当线程池执行 terminated()方法时,线程池进入TIDYING状态

TERMINATED

表示线程池已停止运行,所有的工作线程已经被销毁,所有的任务已经被清空或者执行完毕,terminated() 方法执行完毕之后线程池进入此状态


http://www.kler.cn/a/310919.html

相关文章:

  • Could not initialize class sun.awt.X11FontManager
  • C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
  • Pycharm PyQt5 环境搭建创建第一个Hello程序
  • MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?
  • 【QT】QSS
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • 聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展
  • 【WiFi】Qualcomm WCN6856 进入FTM操作说明
  • 初识网络编程
  • 多线程之CompletableFuture
  • 【模板进阶】模板的万能引用
  • 基于深度学习的图像描述生成
  • 机器学习 vs. 深度学习
  • Apple M3编译MAVSDK安卓平台SO库
  • 如何在Android上实现RTSP服务器
  • 2024/9/19 408大题专训之五段式指令流水线题型总结
  • fastson与jackson入门
  • Windows本地制作java证书(与jeecgboot配置本地证书ssl问题)
  • 基于vue框架的宠物领养管理系统88v55(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • Python 数学建模——傅里叶变换时间序列分析
  • LeetCode 算法笔记-第 04 章 基础算法篇
  • Docker vs. containerd 深度剖析容器运行时
  • 【kafka-01】kafka安装和基本核心概念
  • CSP-J算法基础 树状结构与二叉树
  • C++笔记21•C++11•
  • PyRosetta Task介绍及示例代码