JAVA并发(8)-ThreadPoolExecutor的讲解

很久前(2020-10-23),就有想法学习线程池并输出博客,但是写着写着感觉看不懂了,就不了了之了。现在重拾起,重新写一下(学习一下)。

线程池的优点也是老生常谈的东西了

  1. 减少线程创建的开销(任务数大于线程数时)
  2. 统一管理一系列的线程(资源)

在讲ThreadPoolExecutor前,我们先看看它的父类都有些啥。

Executor的继承关系

Executor,执行提交的Runnable任务的对象,将任务提交与何时执行分离开。
execute方法是Executor接口的唯一方法。

    // 任务会在未来某时执行,可能执行在一个新线程中、线程池或调用该任务的线程中。
    void execute(Runnable command);

ExecutorService的继承关系

ExecutorService是一个Executor,提供了管理终止的方法和返回Future来跟踪异步任务的方法(sumbit)。
终止的两个方法

  • shutdown(), 正在执行的任务继续执行,不接受新任务
  • shutdownNow(), 正在执行的任务也要被终止

AbstractExecutorService的继承关系

AbstractExecutorService,实现了ExecutorServicesumbitinvokeAny,invokeAll

ThreadPoolExecutor的继承关系

介绍

版权声明:本文为ukyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ukyu/p/15001199.html