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

线程池的介绍

线程池的分类

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

线程池模式


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

http://www.dtcms.com/a/44836.html

相关文章:

  • 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 的搜索路径中寻找文件
  • Leetcode-柱状图中最大的矩形(单调栈)
  • 进程信号
  • 大模型在白血病诊疗全流程风险预测与方案制定中的应用研究
  • 【AIGC系列】4:Stable Diffusion应用实践和代码分析
  • 大语言模型中的 Token:它们是什么,如何工作?
  • 如何调试Linux内核?
  • 【Java】I/O 流篇 —— 打印流与压缩流
  • 无人系统:未来科技的智能化代表
  • 有关数据库表的冗余字段
  • 塔能科技:工厂智慧照明,从底层科技实现照明系统的智能化控制