线程池的好处
降低资源消耗、提高响应速度、提高线程的可管理性。
缓存线程池CahcedThreadPool
长度无限制。
执行流程:
- 判断线程池是否存在空闲线程。
- 存在则使用。
- 不存在,则创建线程,放入线程池,然后使用。
定长线程池FixedThreadPool
长度是指定数值
任务加入后的执行流程:
- 判断线程池是否存在空闲线程。
- 存在则使用。
- 不存在空闲线程,且线程池未满的情况下,则创建线程并放入线程池,然后使用。
- 不存在空闲线程,且线程池已满的情况下,则等待线程池存在空闲线程。
单线程线程池SingleThreadExecutor
执行流程:
- 判断线程池的那个线程是否空闲。
- 空闲则使用。
- 不空闲则等待池中的单个线程空闲后使用。
周期性任务定长线程池SingleThreadExecutor
执行流程:
- 判断线程池是否有空闲线程存在。
- 存在则使用。
- 不存在空闲线程,且线程池未满的情况下,则创建线程,放入线程池,然后使用。
- 不存在空闲线程,且线程池已满的情况下,则等待线程池存在空闲线程。
周期性任务执行时:定时执行,当某个时机触发时,自动执行某任务。