Java多线程——Executor框架详解 什么是Executor的两级调度模型 一、Executor框架两级调度模型 两级调度模型: 应用层+操作系统层 应用层:将应用分解为若干个任务,使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程。 操作系统层:操作系统内核将这些线程映射到硬件处理器上。 二、Executor框架详解 1、Executor框架的结构(三大块) ①任务:被执行的任务需要实现Runnable或Callable接口 ②任务的执行:任务执行机制的核心接口Executor,以及其子接口ExecutorService,以及ExecutorService较为常用的两个子接口(ThreadPoolExecutor和ScheduledThreadPoolExecutor) ③异步计算的结果:Future接口及其实现类FutureTask类 2、Executor框架的组成成员 ①Executor接口:Executor框架的基础,将任务的提交与任务的执行分离。 ②ThreadPoolExecutor:线程池核心实现类,用来执行被提交的任务。 ③ScheduledThreadPoolExecutor:线程池实现类,在给定的延迟后运行命令,或定期执行命令(比Timer更好) ④Future接口及其子类FutureTask类:异步计算的结果 ⑤Runnable接口和Callable接口的实现类:可以被线程池实现类(ThreadPoolExecutor…)所执行。 3、Executor框架的执行流程(类似线程池执行流程) ①主线程创建Runnable或Callable接口的任务对象。(Executors工具类可以将Runnable封装成Callable对象) ②任务提交(两种方式) 将Runnable对象通过ExecutorService.execute(Runnable command)交给ExecutorService执行(没有返回值) 将Callable对象通过ExecutorService.submit(Callable task)交给ExecutorService执行(有返回值) 可以把Runnable对象通过Executors包装成Callable对象并使用submit()提交,也可获取返回值。