JAVA并发(8)-ThreadPoolExecutor的讲解
JAVA并发(8)-ThreadPoolExecutor的讲解
很久前(2020-10-23),就有想法学习线程池并输出博客,但是写着写着感觉看不懂了,就不了了之了。现在重拾起,重新写一下(学习一下)。
线程池的优点也是老生常谈的东西了
- 减少线程创建的开销(任务数大于线程数时)
- 统一管理一系列的线程(资源)
在讲ThreadPoolExecutor前,我们先看看它的父类都有些啥。
Executor,执行提交的Runnable任务的对象,将任务提交与何时执行分离开。
execute方法是Executor接口的唯一方法。
// 任务会在未来某时执行,可能执行在一个新线程中、线程池或调用该任务的线程中。
void execute(Runnable command);
ExecutorService是一个Executor,提供了管理终止的方法和返回Future来跟踪异步任务的方法(sumbit)。
终止的两个方法
- shutdown(), 正在执行的任务继续执行,不接受新任务
- shutdownNow(), 正在执行的任务也要被终止
AbstractExecutorService,实现了ExecutorService的sumbit、invokeAny,invokeAll