第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

    

  

猜你喜欢

转载自www.cnblogs.com/helloworldmybokeyuan/p/11754149.html