线程池的优势、主要参数、饱和策略
线程池的优势
- 降低资源消耗: 通过重用已创建的线程,减少了线程的创建和销毁带来的资源消耗。
- 提高响应速度: 线程池能够立即执行任务,而不需要等待线程的创建。
- 提高线程的可管理性: 统一分配、调优和监控线程,提高了程序的稳定性。
主要参数
corePoolSize: 核心线程数,定义了最小可以同时运行的线程数量。
maximumPoolSize: 最大线程数,当队列满时,当前可以同时运行的线程数量变为最大线程数。
workQueue: 任务队列,存放等待执行的任务。
keepAliveTime: 当线程池中的线程数量大于核心线程数时,非核心线程的空闲时间超过此值,将被回收。
unit: keepAliveTime 参数的时间单位。
threadFactory: 线程工厂,用于创建新线程。
handler: 饱和策略,定义了当工作队列和线程池的最大线程数都达到上限时的处理策略。
饱和策略
AbortPolicy: 抛出 RejectedExecutionException,拒绝新任务的处理。
CallerRunsPolicy: 调用执行自己的线程运行任务,如果执行程序已关闭,则会丢弃该任务。
DiscardPolicy: 不处理新任务,直接丢弃。
DiscardOldestPolicy: 丢弃队列中等待时间最长的任务,将新任务加入队列。