ExecutorService接口继承于Executor接口,主要提供以下额外功能:
- 管理终结
- 产生Future对象,用于跟踪一个或多个任务的进度。
ExecutorService可以被shut down。这个操作,将导致它拒绝接受新的任务。它提供了两个关闭EexecutorService的方法。
- shutdown():运行之前提交的任务,在ExecutorService关闭之前都将被执行。注意:ExecutorService只保证已提交的任务都启动,至于有没有完成,就不管了,只要都启动了,它就可以关闭了。
- shutdownNow(): 阻止已提交但是正在等待的任务启动,且会尝试取消当前正在执行的任务。
一旦进入Termination(终结)状态,这个executor将不再有正在执行的任务,也没有正在等待的任务,且没有可以被提交的新任务。一个没用的ExecutorService应该被shutdown,来回收它的资源。
submit方法基于execute(Runnable),通过创建并返回一个Future对象扩展了execute方法,可控制任务的执行。比如可取消执行,也可阻塞当前线程等待任务完成。
invokeAny 和 invokeAll 展示了最常用的集体执行的形式。即执行一个集合的任务,并且等待至少一个或者所有任务完成。
Executors类为ExcutorService提供工厂方法