zoukankan      html  css  js  c++  java
  • 手撕源码!线程池核心组件源码剖析

    线程池核心组件图解

    看源码之前,先了解一下该组件 最主要的几个 接口、抽象类和实现类的结构关系。

    手撕源码!线程池核心组件源码剖析

     

    该组件中,Executor 和 ExecutorService 接口 定义了线程池最核心的几个方法,提交任务 submit ()、关闭线程池 shutdown()。抽象类 AbstractExecutorService 主要对公共行为 submit()系列方法进行了实现,这些 submit()方法 的实现使用了 模板方法模式,其中调用的 execute()方法 是未实现的 来自 Executor 接口 的方法。实现类 ThreadPoolExecutor 则对线程池进行了具体而复杂的实现。

    另外还有一个常见的工具类 Executors,里面为开发者封装了一些可以直接拿来用的线程池。

    源码赏析

    话不多说,直接上源码。(这里只看最主要的代码部分)

    Executor 和 ExecutorService 接口

    手撕源码!线程池核心组件源码剖析

     

    AbstractExecutorService 抽象类

    手撕源码!线程池核心组件源码剖析

     

    ThreadPoolExecutor

    手撕源码!线程池核心组件源码剖析

     

    ThreadPoolExecutor 中的 execute()方法 执行 Runnable 任务 的流程逻辑可以用下图表示。

    手撕源码!线程池核心组件源码剖析

     

    工具类 Executors

    看类名也知道,它最主要的作用就是提供 static 的工具方法,为开发者提供各种封装好的 具有各自特性的线程池。

    手撕源码!线程池核心组件源码剖析
  • 相关阅读:
    POJ 1163 状态转移
    POJ 1143 记忆化搜索+博弈论
    POJ 1083
    POJ 1018
    HDU 3572 Dinic
    HDU 3549 Dinic
    配置JDK环境变量配置及path和classpath的作用
    frameset 框架整体退出登录的问题
    java计算时间差及比较时间大小(转)
    Android—Http连接之GET/POST请求
  • 原文地址:https://www.cnblogs.com/jiagoushijuzi/p/13523897.html
Copyright © 2011-2022 走看看