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。

  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12180417.html
Copyright © 2011-2022 走看看