Executor与ExecutorService有什么区别?
时间: 2023-11-03 08:22:23 浏览: 102
Executor,Executors,ExecutorService比较.docx
Executor是Java中的一个接口,它定义了一种执行任务的方式。它只有一个方法execute(Runnable command),用于执行一个Runnable任务。
ExecutorService是Executor的子接口,它扩展了Executor的功能,提供了更多的方法来管理和控制任务的执行。ExecutorService可以提交Callable任务和Runnable任务,并且可以通过Future对象获取任务的执行结果或取消任务的执行。
区别:
1. 功能不同:Executor只能执行Runnable任务,而ExecutorService可以执行Runnable任务和Callable任务,并且可以获取任务的执行结果。
2. 控制能力不同:Executor没有提供停止或关闭执行器的方法,而ExecutorService提供了shutdown()和shutdownNow()方法,用于停止或关闭执行器。此外,ExecutorService还提供了一些其他方法来管理和控制任务的执行,如awaitTermination()、invokeAny()、invokeAll()等。
3. 返回值不同:Executor的execute()方法没有返回值,无法知道任务是否执行成功;而ExecutorService的submit()方法返回一个Future对象,可以通过该对象获取任务的执行结果。
4. 扩展性不同:Executor接口只定义了一个方法,扩展性较差;而ExecutorService接口提供了更多的方法,使得扩展更加灵活。
补充问题:
1. ExecutorService中的shutdown()和shutdownNow()方法有什么区别?
2. 如何使用ExecutorService来实现线程池?
3. ExecutorService中的awaitTermination()方法的作用是什么?
阅读全文