• 第10章 Executor框架


      Java的线程既是工作单元,也是执行机制。从jdk5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,执行机制由Executor来提供

      10.1Executor框架简介

        10.1.1Executor框架的两级调度模型

          在上层,Java多线程程序通常把应用分解为若干任务,然后使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程

          在底层,操作系统内核将这些线程映射到硬件处理器上。这种两级调度模型的示意图如图10-1所示

                  

    1. Executor框架的结构

      主要由3大部分组成

        任务:包括被执行任务所需要实现的接口Runnable接口或者Callable接口

        任务的执行:Executor、ExecutorService、ThreadPoolExecutor、ScheduledThreadExecutor

        异步计算的结果:Futrue、FutureTask类

      下面是这些类和接口的简介

        Executor是一个接口,是框架的基础

        ThreadPoolExecutor是核心实现类,用来执行被提交的任务

        ScheduledThreadPoolExecutor是一个实现类,在指定延迟后执行任务,比Timer更强大

        Future接口和FutureTask实现类,代表异步计算结果

        Runnable和Callable接口的实现类,都可以被执行

      Executor框架的使用示意图如下图所示

            

         主线程首先要创建实现Runnable或者Callable接口的任务对象。工具类Exexutors可以把一个Runnable对象封装为一个Callable对象

         然后可以把Runnable对象直接交给ExecutorService执行ExecutorService.execute(Runnable)

         或者也可以把Runnable对象或者Callable对象交给ExecutorService执行,ExecutorService.submit(Runnable task)或        ExecutorService.submit(Callable<T> task)

        如果执行submit()方法,将返回一个实现了Future接口的对象,目前为止返回的是FutureTask对象

        由于FutureTask实现了Runnable,程序员也可以创建FutureTask,然后直接交给ExecutorService执行

        最后可通过FutureTask.get()方法来等待任务的完成

      2.Executor框架成员

        Executors可以创建3种类型的ThreadPoolExecutor: SingleThreadExecutor、FixedThreadPool和CachedThreadPool

        可以创建2种类型的ScheduledThreadPoolExecutor:  ScheduledThreadPoolExecutor、SingleThreadSchuledExecutor

        

      

  • 相关阅读:
    android基于adb的性能测试
    mysql-3 数据表的创建、增删改查
    17.3.16---python内建函数
    17.3.15---C语言详解FILE文件操作
    17.3.15---关于GPIO控制流水灯的信息
    17.3.15---关于GPIO学习笔记
    17.3.14--对于时钟的知识,涉及到的总结
    17.3.14对于面向对象的理解
    17.3.13--pycharm2和3的常识问题
    17.3.13--python编码问题
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/11754149.html
Copyright © 2020-2023  润新知