zoukankan      html  css  js  c++  java
  • 第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

        

      

  • 相关阅读:
    export ,export default 和 import 区别 以及用法
    koa2 安装环境
    Webstorm在MAC下的安装方法
    Mac 下搭建vue开发环境
    Mac系统下安装Vue-cli详细步骤
    npm 安装vue 报错Failed at the chromedriver@2.34.0 install script 'node install.js'
    #001 WebStrom SVN使用技巧
    #006 dependencies和devDependencies的区别
    #001 GIT创建分支
    #003 React 组件 继承 自定义的组件
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/11754149.html
Copyright © 2011-2022 走看看