线程池复习

手写线程池 - C语言版 | 爱编程的大丙 (subingwen.cn)

  1. 线程池原理

我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。

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

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

在各个编程语言的语种中都有线程池的概念,并且很多语言中直接提供了线程池,作为程序猿直接使用就可以了,下面给大家介绍一下线程池的实现原理:

条件变量:

唤醒:

相关推荐
pupudawang1 分钟前
Spring EL 表达式的简单介绍和使用
java·后端·spring
jiankeljx7 分钟前
Spring Initializr创建springboot项目,提示java 错误 无效的源发行版:16
java·spring boot·spring
competes7 分钟前
深圳程序员职业生涯
java·大数据·开发语言·人工智能·java-ee
深蓝轨迹9 分钟前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
小小小米粒19 分钟前
Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。
java·开发语言
Rhystt26 分钟前
代码随想录算法训练营第六十天|多余的边?从基础到进阶!
开发语言·c++·算法·图论
skiy30 分钟前
springboot+全局异常处理
java·spring boot·spring
愤豆31 分钟前
07-Java语言核心-JVM原理-JVM对象模型详解
java·jvm·c#
东离与糖宝36 分钟前
零基础Java学生面试通关手册:项目+算法+框架一次搞定
java·人工智能·面试
gaozhiyong081338 分钟前
超越跑分:Gemini 3.1 Pro 2026年多维度能力评估体系深度拆解
java·开发语言