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

  • 相关阅读:
    zoj 3233 容斥原理 + 双条件
    bzoj 1038 瞭望塔 半平面交 + 最小值 枚举
    linux 常用命令
    Vue路由
    luffycity项目开发
    Vue组件化开发
    Vue对象提供的属性功能
    Vue快速入门
    Django-DRF(路由与扩展功能)
    Django-DRF(视图相关)
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12180417.html
Copyright © 2011-2022 走看看