本文最后更新于14 天前,其中的信息可能已经过时,如有错误请发送邮件到1169063119@qq.com
线程池由线程池管理器、工作队列和线程池组成
线程池的基本概念
在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被其他任务复用
池化思想:
线程池、字符串常量池、数据库连接池
线程池的设计思想
为了避免频繁的创建和销毁线程的开销,以及控制并发执行的线程数量,从而提高系统的性能和资源的利用率
如果不使用线程池,对线程的对象:
- 手动创建线程对象
 - 执行任务
 - 执行完毕,释放线程对象
 
线程池的关键组成部分
线程池管理器
负责创建、管理和控制线程池。他负责线程的创建、销毁和管理,以及线程池的状态监控和调度任务
工作队列
用于存储待执行的任务。当线程池中的线程都在执行任务时,新的任务会被放入工作队列中等待执行
线程池线程
实际执行任务的线程。线程池中会委会一组线程,这些线程可以被重复使用,从而避免了频繁创建和销毁线程的开销
线程池的优点
重用线程
线程池会在内部维护一组可重用的线程,避免了频繁的创建和销毁线程的开销,提高了线程的利用率。
控制并发度
线程池可以限制并发执行的线程数量,防止系统过载。通过调整线程池的大小,可以控制并发度,避免资源消耗过大
提供线程管理和监控
线程池提供了一些管理和监控机制,例如线程池的创建、销毁、线程状态的监控等,方便开发人员进行线程的管理和调试
提供任务队列
线程池通常会使用任务队列来存储待执行的任务,这样可以实现任务的缓冲和调度
线程池的缺点
需要合理配置
线程池的性能和效果收到了配置参数的影响,需要根据具体的应用场景和硬件环境来合理配置线程的大小、任务队列的大小等参数
可能引发资源泄露
如果线程池中的线程长时间闲置而不被使用,可能会导致资源的浪费和泄露
可能引发死锁
在使用线程池时,如果任务之间存在依赖关系,可能会引发死锁问题,需要额外的注意和处理



