缓存线程池
- 判断线程池中是否有空闲线程
- 有则使用
- 没有则创建线程,放入线程池,使用
- 当线程池的大小超过了任务所需,会回收一部分空闲线程释放内存
ExecutorService service = Executors.newCachedThreadPool();
定长线程池
- 判断线程池中是否有空闲线程
- 有则使用
- 没有则查看线程池是否已满,未满则创建线程,使用
- 满了则等待空闲线程
ExecutorService service = Executors.newFixedThreadPool(nThreads:2);
单线程线程池
- 判断线程池中的线程是否空闲
- 空闲则用
- 不空闲则等待
ExecutorService service = Executors.newSingleThreadExecutor();
周期定长线程池
- 判断线程池中是否有空闲线程
- 有则使用
- 没有则查看线程池是否已满,未满则创建线程,使用
- 满了则等待空闲线程
定时执行,当某个时机触发时,自动执行某任务
ExecutorService service = Executors.newScheduledThreadPool(corePoolSize:2);
定时执行一次,参数列表:
- 定时执行的任务
- 定时的数字
- 定时的单位
TimeUnit
周期性执行任务,参数列表:
- 任务
- 延迟时长数字
- 周期时长数字
- 时长数字的单位