线程池的原理,为什么要创建线程池?这是个问题,本文做一个总结。
要理解线程池的原理,首先就要知道什么是线程池,线程池好理解,一个存储有线程的池子,但不够具体,为什么要把线程存起来,而不是使用时创建呢?很简单,需要共用线程,根本原因就是创建线程的开销太大,所以才需要重复利用,而要深入理解创建线程的过程,就得了解线程的本质,知道其生命周期,这样才知道我们重复利用的是哪个部分。
- 线程池是一个存储活动线程的池子,让线程可以重复利用,而不是频繁创建销毁
- 如果没有线程池,
- 线程需要频繁创建销毁,而线程的创建和销毁开销很大,本质上是对象的创建和资源的分配
- 并且活动线程需要消耗大量内存空间
- 线程缺乏统一管理,可能无限创建,相互竞争,耗尽系统资源
- 缺乏丰富的控制:定时、定期、缓存等
- 当放到线程池里,线程的生命周期会很长,这样就只剩下线程切换的开销了,而这个基本上固定;线程也被管理起来,变得可控;
- 线程池有多种方案可选,比如固定大小,控制存活时间等,而直接创建销毁线程就只有一个模式,不能适用多种场景
- 总结起来无非:节省资源、提高效率、保护系统安全、丰富场景