使用线程池的好处:
- 降低资源消耗。可以重复利用已创建的线程池,降低线程创建和消耗的损耗。
- 提高相应速度。任务到达之后,不需要等待创建线程,可以立即使用。
- 提高线程的可管理性。线程是稀缺资源,如果无限制的创建线程,不仅会消耗资源,还会降低系统稳定性,使用线程池可以统一分配、调优和监控。
线程池的工作原理:
线程池中的必要参数:
- corePoolSize(必需):核心线程数。默认情况下,核心线程会一直存活。
- maximumPoolSize(必需):线程池所能容纳的最大线程数。
- keepAliveTime(必需):线程闲置超时时长。如果超过该时长,非核心线程就会被回收。
- unit(必需):指定 keepAliveTime 参数的时间单位。常用的有:TimeUnit.MILLISECONDS(毫秒)、TimeUnit.SECONDS(秒)、TimeUnit.MINUTES(分)。
- workQueue(必需):任务队列。通过线程池的 execute() 方法提交的 Runnable 对象将存储在该参数中。其采用阻塞队列实现。
- threadFactory(可选):线程工厂。用于指定为线程池创建新线程的方式。
- handler(可选):拒绝策略。当达到最大线程数时需要执行的饱和策略。