前面几篇文章分析了线程的主要实现,今天来整体总结以下他们。
总览图
直接上总结的总览图,如下图:
如果看过前几篇文章应该基本能够看懂这张总结图,可能在单独的一篇文章里弄懂了一个知识点,但是没有一个总体的概念,所以最后有了这种总结图。前面几篇文章主要讲的就是上图中AbstractExecutorService、ThreadPoolExecutor、ScheduledThreadPoolExecutor这三个类的主要功能,因为它们是线程池真正的实现者。
两个接口
接下来详细解释下上图出现的类和接口,首先是最顶层的接口Executor,它只定义了一个方法execute(Runnable command),相当于定义了一个框架,它能够执行一个任务。Executor就像是定义了一个框架,并确定了这个框架能够提供的功能。
第二个是ExecutorService接口,它继承Executor。主要扩展了关闭线程管理的一些功能,比如shutdown方法用来关闭线程池的任务,isTerminated方法来判断线程池的任务是否结束。
ExecutorService还提供了最重要的方法submit,它支持了有返回结果的任务提交,也引入了实现这个功能最关键的接口Callable