Java并发编程的艺术学习笔记(十)——Executor框架
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java并发编程的艺术学习笔记(十)——Executor框架,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2295字,纯文字阅读大概需要4分钟。
内容图文
![Java并发编程的艺术学习笔记(十)——Executor框架](/upload/InfoBanner/zyjiaocheng/599/f284be421c224d978bc7a9b04cf42758.jpg)
第10章 Executor框架
Java线程既是工作单元也是执行机制,JDK5开始把工作单元和执行机制分离开来。工作单元包括Runnable和Callable,执行机制由Executor框架提供
10.1 Executor框架简介
10.1.1 Executor框架的两级调度模型
在Hotspot VM的内存模型中,Java线程被一对一映射成本地操作系统线程。Java线程启动时会创建一个本地线程,Java线程终止时,对应的本地线程会被回收。
在上层,Java多线程程序通常把应用分解成若干个任务,通过用户级的调度器——Executor框架,将这些任务映射为若干数量的线程。
在底层,操作系统内核将这些线程映射到硬件处理器上。
10.1.2 Executor框架的结构与成员
Executor框架主要由3大部分组成:
任务:被执行任务需要实现Runnable接口和Callable接口
任务的执行:核心接口Executor以及继承自Executor接口的ExecutorService接口,两个关键实现类:ThreadPoolExecutor和ScheduledThreadPoolExecutor
任务执行的接口:Future接口和实现Future接口的FutureTask类
Executor框架的使用
1.创建实现Runnable接口或者Callable接口的任务对象
2.将任务直接交给Executor执行:ExecutorService.execute(runnable),或者将任务提交给Executor:ExecutorService.submit(runnable),
3.将任务执行结果交给实现Future接口的对象(FutureTask)
4.通过FutureTask.get()方法来等待任务执行,或者通过Future.cancle()方法来取消任务执行
Executor框架的成员
1.ThreadPoolExecutor 通常使用工厂类Executors创建
FixedThreadPool 固定线程数,适用于负载比较重的服务器。
SingleThreadPoolExecutor 单个线程,适用于需要保证顺序执行各个任务,并且在同一时间点不会有多个线程是活动状态的场景
CachedThreadPool 可以根据需要创建新的线程,是大小无界的线程池,适用于执行很多的短期异步任务的小程序,或负载比较轻的服务器
2.ScheduledThreadPoolExecutor 通常使用工厂类Executors创建
ScheduledThreadPoolExecutor 包含若干个线程,适用于多个后台线程执行周期任务同时满足资源管理需求从而限制后台线程数量的场景
SingleScheduledThreadPoolExecutor 只包含单个线程,适用于后台一个线程执行周期任务,同时需要顺序执行各个任务的场景
3.Future接口和实现类FutureTask 异步计算的结果
4.Runnable接口和Callable接口 任务对象需要实现的接口,Runnable不会返回结果,Callable可以返回结果
10.2 ThreadPoolExecutor详解
Executor框架最核心的类,它是线程池的实现类,由4个组件组成
corePool:核心线程池大小
maximum:最大线程数
BlockingQueue:用来保存工作任务的队列
RejectedExecutionHandler:当线程池关闭或者线程池已满(线程数量达到最大线程数且工作队列已满)时调用的handler
三种类型的ThreadPoolExecutor
1.FixedThreadPool 可重用固定线程数的线程池
内容总结
以上是互联网集市为您收集整理的Java并发编程的艺术学习笔记(十)——Executor框架全部内容,希望文章能够帮你解决Java并发编程的艺术学习笔记(十)——Executor框架所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。