java多线程之Executor框架线程池详细介绍与ThreadPoolExecutor

Posted heqiyoujing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程之Executor框架线程池详细介绍与ThreadPoolExecutor相关的知识,希望对你有一定的参考价值。

Executor框架简介

Executor框架的结构

Executor框架主要由3大部分组成:

  • 任务: 包括被执行的任务需要实现的接口:Runable 接口、Callable接口;
  • 任务的执行: 包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现了ExecutorService接口:ThreadPoolExecutor 和 ScheduledThreadPoolExecutor、ForkJoinPool;
  • 任务的异步计算结果: 包括Future接口和实现Future接口的FutureTask类、ForkJoinTask类。

Executor框架的成员介绍

1、Runnable接口 和 Callable接口

  Runnable接口和Callable接口的实现类,都可以被ThreadPoolExecutor或Scheduled-
ThreadPoolExecutor执行。
它们之间的区别是Runnable不会返回结果,而Callable可以返回结
果。
  除了可以自己创建实现Callable接口的对象外,还可以使用工厂类Executors来把一个
Runnable包装成一个Callable。

2、Executor、ExecutorService、AbstractExecutorService、ScheduledExecutorService
  • Executor 接口: 是Executor框架的基础,它将任务的提交与任务的执行分离开来。
  • ExecutorService 接口: 扩展了Executor接口,提供了管理终止的方法(shutdown( ) ,etc),以及可为跟踪一个或多个异步任务执行状况而生成 Future 的方法。
  • AbstractExecutorService 类: 提供 ExecutorService 执行方法的默认实现。
  • ScheduledExecutorService 接口: 一个特殊的 ExecutorService,提供了 可安排在给定的延迟后运行或定期执行的命令。
3、ThreadPoolExecutor

  ThreadPoolExecutor通常使用工厂类Executors来创建。Executors可以创建3种类型的ThreadPoolExecutor:SingleThreadExecutor、FixedThreadPool和CachedThreadPool。
以下是这三种线程池的应用场景说明:

  FixedThreadPool适用于为了满足资源管理的需求,而需要限制当前线程数量的应用场
景,它适用于负载比较重的服务器。

    • SingleThreadExecutor适用于需要保证顺序地执行各个任务;并且在任意时间点,不会有多
      个线程是活动的应用场景。
    • CachedThreadPool是大小无界的线程池,适用于执行很多的短期异步任务的小程序,或者
      是负载较轻的服务器

 

4、ScheduledThreadPoolExecutor

  ScheduledThreadPoolExecutor通常使用工厂类Executors来创建。Executors可以创建2种类
型的ScheduledThreadPoolExecutor,如下。

 

    • ScheduledThreadPoolExecutor:包含若干个线程的ScheduledThreadPoolExecutor。
    • SingleThreadScheduledExecutor:只包含一个线程的ScheduledThreadPoolExecutor。

技术图片技术图片

 

以上是关于java多线程之Executor框架线程池详细介绍与ThreadPoolExecutor的主要内容,如果未能解决你的问题,请参考以下文章

Java Executor线程池框架的概述

多线程之线程池基本内容

多线程之线程池基本内容

Java Executor源码解析—Executors线程池工厂以及四大内置线程池

转:Java并发编程之十九:并发新特性—Executor框架与线程池(含代码)

Java多线程学习线程池与Executor 框架