• Excutor框架


      从jdk5开始,把工作单元和执行机制分离开来。工作单元包括 Runnable 和 Callable,而执行机制由 Executor 框架提供。

    一、Executor框架:

    1、Executor框架两级调度模型:

      在上层,java多线程程序把应用分解为若干个任务,然后执行用户级调度器,即Executor框架,将任务映射为若干数量的线程。

      在底层,操作系统内核将这些线程映射到硬件处理器上。

      应用程序由Executor框架控制上层调度,下层调度由操作系统内核控制,下层调度不受到应用程序控制。

    2、Executor框架结构:主要由3大部分组成

    (1)任务:被执行任务需要实现的接口,Runnable接口、Callable接口。

    (2)任务的执行:任务执行机制的核心接口Executor,以及继承自 Executor 的 ExecutorService 接口。ExecutorService 有两个实现类 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor。

    (3)异步计算的结果:包括接口 Future 和实现 Futrue 接口的 FutureTask 类。

    3、Executor框架的使用:

    (1)任务创建:主线程首先创建实现 Runnable 或者 Callable 接口的任务对象。工具类 Executors 可以把一个 Runnable 对象封装为一个 Callable 对象,Executors.callable(Runnable task) 或

    Executor.callable(Runnable task,Object resule)。

    (2)执行:然后把Runnable 对象直接交给 ExecutorService 执行, ExecutorService.execute(Runnable command);或者也可以把Runnable 对象提交给ExecutorService执行,ExecutorService.submit(Runnable task)或 ExecutorService.submit(Callable<T> task)。

      如果执行ExecutorService.submit(...),ExecutorService 将返回一个实现Future接口的对象FutureTask。由FutureTask实现了Runnable,也可以直接创建FutureTask,然后直接交给ExecutorService运行。

    (3)获取结果:主线程可以执行FutureTask.get()方法来等待任务执行完成。主线程也可以执行FutureTask.cancle(boolean mayInterruptIfRunning),来取消此任务创建。

    4、Executor框架的成员:ThreadPoolExecutor、ScheduledThreaPoolExecutor、Future 接口、Runnable 接口、Callable 接口和 Executors 工厂类。

      ThreadPoolExecutor是Executor框架最核心的线程池实现类。

      通过Executors工厂类可以创建四种线程池,分别是FixedThreadPool、SingleThreadExecutor、CachedThreadPool、ScheduledThreaPoolExecutor。

  • 相关阅读:
    UIActivityIndicatorView的使用
    几道面试题-考察JS的运用
    第六章-面向对象的程序设计(理解对象)
    webpack学习之——npm的安装依赖情况
    面向对象的编程(五)
    Javascript面向对象编程(四):非构造函数的继承
    面向对象的编程(三)—封装
    面向对象的编程(二)构造函数的继承
    面向对象的编程—封装
    第五章——引用类型
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12180417.html
Copyright © 2020-2023  润新知