线程池关键类
上一篇事一些基础的东西,这一篇把相关的几个重要的类写一下,涉及到的主要是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().

浙公网安备 33010602011771号