美文网首页
线程池-Executor的设计概览

线程池-Executor的设计概览

作者: rock_fish | 来源:发表于2020-08-06 18:49 被阅读0次

Executor

此接口将任务任务的具体执行实现 分离;不同的策略就有不同的具体实现。
任务类型为Runnable,忽略任务结果。
从注释中可知,实际执行任务的线程可以是以下情况:

  1. 新线程
  2. 线程池
  3. 调用者线程
public interface Executor {

    /**
     * Executes the given command at some time in the future.  The command
     * may execute in a new thread, in a pooled thread, or in the calling
     * thread, at the discretion of the {@code Executor} implementation.
     */
    void execute(Runnable command);
}

ExecutorService

1. Callable任务

通过submit扩展了Executor,可操作的任务类型Callable,可通过Future.get()以阻塞的方式获取任务结果。

public interface ExecutorService extends Executor{
    <T> Future<T> submit(Callable<T> task);
    <T> Future<T> submit(Runnable task, T result);
    Future<?> submit(Runnable task);
}
2.可关闭、终止

默认情况下,线程池中的线程是非守护线程,在线程池不在需要的时候,需要手动的关闭,调用shutdown或者shutdownNow方法,通过isShutdown来判断是否已关闭。等待终止awaitTermination,判断是否终止状态isTerminated

AbstractExecutorService

抽象类,实现ExecutorService,提供了几个方法的具体实现。

ThreadPoolExecutor

提供了线程池执行器的具体实现。

public class ThreadPoolExecutor extends AbstractExecutorService

相关文章

网友评论

      本文标题:线程池-Executor的设计概览

      本文链接:https://www.haomeiwen.com/subject/nwmbrktx.html