线程池关键类

上一篇事一些基础的东西,这一篇把相关的几个重要的类写一下,涉及到的主要是ThreadPoolExecutor、AbstractExecutorService、ExecutorService和Executor。

正如上一篇说的:

ThreadPoolExecutor  extends  AbstractExecutorService(抽象类)

AbstractExecutorService implements ExecutorService(接口)

ExecutorService extends Executor(接口)

Executor 是最底层的接口,只声明了一个方法,也就是真正执行任务的。

public interface Executor {
    void execute(Runnable command);
}

ExecutorService 继承了Executor,并声明了几个方法:

void shutdown();
List<Runnable> shutdownNow();
<T> Future<T> submit(Callable<T> task);
Future<?> submit(Runnable task);
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,long timeout, TimeUnit unit) throws InterruptedException;

等等。


AbstractExecutorService 实现了 ExecutorService中大部分方法。


ThreadPoolExecutor继承了AbstractExecutorService:

ThreadPoolExecutor中的核心方法是execute(),是Executor中声明的方法具体的实现,这个方法把任务交给线程执行。
submit()方法是在AbstractExecutorService实现的,它和execute()的不同是,它会有返回值,其实submit()最终也是调用execute()方法。
所以ThreadPoolExecutor的核心方法还是execute().

posted @ 2018-01-18 20:33  小yoyo大能量  阅读(99)  评论(0)    收藏  举报