大约 84 分钟
大约 16 分钟
什么是线程池
线程池(Thread Pool)是⼀种基于池化思想管理线程的⼯具,经常出现在多线程服务器中,如MySQL。
线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执⾏的任务。这种做法,⼀⽅⾯避免了处理任务时创建销毁线程开销的代价,另⼀⽅⾯避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利⽤。
⽽本⽂描述线程池是JDK中提供的ThreadPoolExecutor类。
当然,使⽤线程池可以带来⼀系列好处:
- 降低资源消耗:通过池化技术重复利⽤已创建的线程,降低线程创建和销毁造成的损耗。
- 提⾼响应速度:任务到达时,⽆需等待线程创建即可⽴即执⾏。
- 提⾼线程的可管理性:线程是稀缺资源,如果⽆限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使⽤线程池可以进⾏统⼀的分配、调优和监控。
- 提供更多更强⼤的功能:线程池具备可拓展性,允许开发⼈员向其中增加更多的功能。⽐如延时定时线程池
ScheduledThreadPoolExecutor,就允许任务延期执⾏或定期执⾏。
大约 26 分钟