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

线程池的介绍

线程池的分类

FixedThreadPool:
固定线程池:线程池中的线程数量固定,这些线程会一直存在,不会随任务的增 加或减少而动态调整,超出的任务会在队列中等待。
使用场景:任务量比较固定但耗时较长的任务。
CachedThreadPool:
缓存线程池:可根据需要创建新线程的线程池,如果新任务到达,但线程池中没有可用线程,则创建一个新线程并添加到池中,如果有被使用完但是还没销毁的线程,就复用该线程。线程池中超过60秒未使用的线程,将会被移除和销毁。
使用场景:任务量大但耗时少的任务
SingleThreadPool:
单线程池,使用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执 行。
使用场景:多个任务顺序执行(FIFO,优先级)。
WorkStealingPool:
工作窃取线程池,创建一个拥有多个任务队列(以便减少连接数)的线程池; 使用场景:会创建一个含有足够多线程的线程池,来维持相应的并行级别,它会通过工作窃取的方式,使得多核的 CPU 不会闲置,总会有活着的线程让 CPU 去运行。 如果当前工作线程处理完自己本地任务队列中的任务时,就会去全局队列或者其他工程线程的队列里面查找工作任务,帮助它们完成。 利用Work Staling,可以更好实现负载均衡。
ScheduledThreadPool
计划线程池(定时线程池,调度线程池)
使用场景:定时以及周期性执行任务。

线程池模式


线程池模式一般分为两种:L/F领导者与跟随者模式,HS/HA半同步/半异步模式。
领导者跟随者模式,在线程池中的线程可处在3种状态之一:领导者leader、追随者follower或工作者processor。任何时刻线程池只有一个领导者线程。事件到达时,领导者线程负责消息分离,并从处于追随者线程中选出一个来当继任领导者,然后将自身设置为工作者状态去处置该事件,处理完毕后工作者线程将自身的状态置为追随者。在ACE中,提供了领导者跟随者模式实现。
半同步/半异步模式又称为生产者消费者模式,是比较常见的实现方式,比较简单。分为同步层、队列层、异步层三层。同步层的主线程处理工作任务并存入工作队列,工作线程从工作队列取出任务进行处理,如果工作队列为空,则取不到任务的工作线程进入挂起状态。由于线程间有数据通信,因此不适于大数据量交换的场合。

相关文章:

  • Linux-ftrace-双nop机制的实现
  • c# winform程序 vs2022 打包生成安装包
  • # 代码写作风格:优雅编程的艺术
  • 一文掌握 Scrapy 框架的详细使用,包括实战案例
  • 【SQL】掌握SQL查询技巧:数据分组与排序
  • 优艾智合机器人日本子公司成立,加速推进国际化布局
  • Redis大key
  • Zynq移植canopen协议站canfestival+控制电机运动
  • 使用AI后为什么思考会变得困难?
  • 2.4 自动化评测答疑机器人的表现-大模型ACP模拟题-真题
  • k8s拉取harbor镜像部署
  • 3 算法1-4 过河卒
  • CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。
  • word中把latex公式快速转换为word公式
  • 第二章 activiti “开发环境搭建训练营”
  • 通信原理速成笔记(信息论及编码)
  • 蓝桥 发现环
  • Leetcode-最大矩形(单调栈)
  • 【数据集】ACM数据集
  • Python Cookbook-2.20 在 Python 的搜索路径中寻找文件
  • 个人备案号 可以做游戏网站吗/想做一个网站
  • 上海做公司网站多少钱/搜索引擎优化的含义
  • 优化英文/西安整站优化
  • 国家网站建设/网址大全名称
  • 明年做哪个网站能致富/搜索引擎营销案例分析
  • 网站做跳转会有什么影响/百度统计数据分析