在线程池的api中,Executor接口是最上层的接口,内部只有一个方法。如下:
public interface Executor { void execute(Runnable command); }
ExecutorService接口继承自Executor接口,结构如下:
而线程池的类ThreadPoolExecutor,具体关系如下:
execute():用于执行线程
shutdown() : 关闭线程
ExecutorService接口中的submit()方法和execute()方法的区别 :
submit(Runnable)和execute(Runnable)的区别是前者可以返回一个Future对象,通过返回的Future对象,我们可以检查提交的任务是否执行完毕,请看下面执行的例子:
Future future = executorService.submit(new Runnable() { public void run() { System.out.println("Asynchronous task"); } }); future.get(); //returns null if the task has finished correctly.
如果任务执行完成,future.get()
方法会返回一个值。注意,future.get()方法会产生阻塞。
参考博客: