java线程池相关接口Executor和ExecutorService

在线程池的api中,Executor接口是最上层的接口,内部只有一个方法。如下:

public interface Executor {

    void execute(Runnable command);
}

ExecutorService接口继承自Executor接口,结构如下:

《java线程池相关接口Executor和ExecutorService》

而线程池的类ThreadPoolExecutor,具体关系如下:

《java线程池相关接口Executor和ExecutorService》

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()方法会产生阻塞。

 

 参考博客:

http://www.cnblogs.com/expiator/p/9053754.html

https://blog.csdn.net/suifeng3051/article/details/49443835

    原文作者:java 线程池
    原文地址: https://www.cnblogs.com/expiator/p/9329930.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞