读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
1.Java实战(第二版)读后总结与感想2.读Java实战(第二版)笔记01_Java的变化3.读Java实战(第二版)笔记02_行为参数化Lambda表达式4.读Java实战(第二版)笔记03_引入和使用流5.读Java实战(第二版)笔记04_用流收集数据6.读Java实战(第二版)笔记05_Collection API的增强功能7.读Java实战(第二版)笔记06_新的日期和时间API8.读Java实战(第二版)笔记07_用Optional取代null9.读Java实战(第二版)笔记08_默认方法10.读Java实战(第二版)笔记09_函数式的思考11.读Java实战(第二版)笔记10_函数式编程的技巧12.读Java实战(第二版)笔记11_语言特性和类库更新13.读Java实战(第二版)笔记12_重构、测试和调试14.读Java实战(第二版)笔记13_Java模块系统
15.读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
16.读Java实战(第二版)笔记15_并行数据处理与性能17.读Java实战(第二版)笔记16_组合式异步编程18.读Java实战(第二版)笔记17_反应式编程19.读Java实战(第二版)笔记18_基于Lambda的领域特定语言20.读Java实战(第二版)笔记19_尾声1. 潮流
1.1. 与应用程序运行的硬件平台相关
1.1.1. 编写能充分利用多核处理器能力的软件
1.2. 与应用程序的结构相关
1.2.1. 反映了互联网应用对可用性日益增长的需求
2. 聚合型应用(mashup)
2.1. 使用来自多个数据源的内容,将它们聚集在一起,从而简化我们的生活
3. 并发
3.1. 一种编程属性(重叠地执行)
3.2. 在单核的机器上可以执行
4. 并行
4.1. 执行硬件的属性(同时执行)
5. 为支持并发不断演进
5.1. 提供了锁(通过synchronized类和方法)、Runnable以及线程
5.2. Java 5又引入了java.util.concurrent包
5.3. Java 7为了使用fork/join实现分而治之算法,新增了java.util.concurrent.RecursiveTask
5.4. Java 8则增加了对流和流的并行处理(依赖于新增的Lambda表达式)的支持
5.5. Java 9提供了对分布式异步编程的显式支持
5.6. Java 9通过“发布-订阅”协议增加了对反应式编程的支持
6. 线程以及更高层的抽象
6.1. 对并行流的迭代是比显式使用线程更高级的概念
6.2. 使用流(Stream)是对一种线程使用模式的抽象
6.3. 执行器和线程池
6.3.1. Java 5提供了执行器框架,其思想类似于一个高层的线程池,可以充分发挥线程的能力
6.3.2. 能以很低的成本向线程池提交上千个任务,同时保证硬件匹配的任务执行
6.4. 使用线程池都比直接操纵线程要好
6.4.1. 使用k个线程的线程池只能并发地执行k个任务
6.4.2. 超限的任务会被加入等待队列,直到现有任务执行完毕才会重新调度空闲线程去执行新任务
6.5. 严格fork/join
6.5.1. 线程创建以及与其匹配的join()在调用返回的嵌套方法调用中都以嵌套的方式成对出现
6.5.2. 无论什么时候,任何任务(或者线程)在方法调用中启动时,都会在其返回之前调用同一个方法
6.6. 非嵌套方法调用
7. 同步及异步API
7.1. 同步API变为异步API
7.1.1. 方法不再在物理返回其调用者的同时返回它的执行结果
7.1.2. 被调用函数可以在返回结果就绪之前物理上提前返回调用函数
7.1.3. 方法异步化(在完成它们的工作之前返回)能提升程序的并发度,其可以与用于循环结构的优化进行互补
7.2. Future风格的API
7.2.1. 使用Java Future的改进版本
7.3. 反应式风格的API
7.3.1. 使用Java 9 java.util.concurrent.Flow接口的反应式编程风格
7.4. 有害的睡眠及其他阻塞式操作
7.4.1. 线程池中的任务即便是处于睡眠状态,也会阻塞其他任务的执行
7.4.2. 它们无法停止已经分配了线程的任务,因为这些任务的调度是由操作系统管理的
8. “线框-管道”模型
8.1. box-and-channel
8.2. 可以对异步系统进行可视化
8.3. 设计和理解并发系统最好的方式是使用图形
9. 反应式系统
9.1. 一个程序,其架构很灵活,可以在运行时调整以适应变化的需求
9.2. 响应性
9.2.1. 不能因为正在替某人处理一个大型任务就延迟其他用户的查询请求,它必须实时地对输入进行响应
9.3. 韧性
9.3.1. 不能因为某个组件失效就无法提供服务
9.4. 弹性
9.4.1. 系统可以调整以适应工作负荷的变化,持续高效地运行
9.5. 消息驱动
9.5.1. 基于线框-管道模型提供了内部API,组件等待要处理的输入,处理结果通过消息发送给其他的组件
10. Future和CompletableFuture
10.1. 思维模式是计算的执行是独立且并发的
10.2. Future是一个一次性对象,它只能从头到尾执行代码一次
11. 反应式编程
11.1. 思维模式是类Future的对象随着时间的推移可以产生很多的结果
12. 发布-订阅”的模型
12.1. pub-sub
12.2. 订阅者可以订阅的发布者
12.3. 名为订阅的连接
12.4. 消息(也叫事件),它们通过连接传输
12.5. 数据的流动是从发布者(生产者)流向订阅者(消费者)
12.5.1. 向上流(upstream)
12.5.2. 向下流(downstream)
12.6. 提供了对onError和onComplete方法的支持
12.6.1. 比传统的观察者模式更加强大
12.7. 背压
12.7.1. 流量控制
12.8. 压力
合集:
读Java实战(第二版)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库