线程池¶
为什么要使用线程池¶
使用线程池主要有以下三个原因:
- 创建/销毁线程需要消耗系统资源,线程池可以**复用已创建的线程**。
- 控制并发的数量。并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃。(主要原因)
- 可以对线程做统一管理。
线程池的原理¶
Java中的线程池顶层接口是Executor
接口,ThreadPoolExecutor
是这个接口的实现类。
ThreadPoolExecutor
在创建线程时,会将线程封装成**工作线程worker**,并放入**工作线程组**中,然后这个worker反复从阻塞队列中拿任务去执行。