1. 阻塞式I/O

1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式

1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好

2. 非阻塞式I/O

2.1. 异步I/O

2.2. 可以处理大量并发网络连接,而且一个线程可以为多个连接服务

2.3. 适用场景

2.3.1. 业务逻辑本身就使用事件来描述

2.3.1.1. Twitter

2.3.1.2. 图形化展示股票价格

2.3.2. 应用需要同时处理大量I/O操作

2.3.2.1. 阻塞式I/O需要同时使用大量线程,这会导致大量锁之间的竞争和太多的上下文切换

3. 消息传递架构

3.1. Vert.x

3.1.1. 没有限制只能使用字符串传递消息

3.1.2. 可以使用更复杂的JSON对

3.1.3. 使用Buffer类构建自己的消息

3.2. 确保消息不会共享状态是最重要的

3.2.1. 不可变消息是最简单的解决方式

3.2.2. 通过复制消息也能解决该问题

4. 末日金字塔问题

4.1. 使用with方法

4.1.1. 不再是一个方法只能有一个功能,我们将一个功能分散在了多个方法里

4.2. 不使用try-with-resources的方式

5. Future

5.1. 方法不是返回一个值,而是返回一个Future对象,该对象第一次创建时没有值,但以后能拿它“换回”一个值

6. CompletableFuture

6.1. 延迟对象或约定

6.2. 从单一的返回值推广到数据流

6.2.1. 来处理一个值

6.2.2. 可以组合不同的实例,而不用担心末日金字塔问题

6.2.3. 注册Lambda表达式,并且把高阶函数链接起来

6.2.4. 结合了Future对象打欠条的主意和使用回调处理事件驱动的任务

6.3. 如果你想在链的末端执行一些代码而不返回任何值,比如Consumer和Runnable,就thenAccept和thenRun方法

6.4. 可使用thenApply方法转换CompletableFuture对象的值,有点像使用Stream的map方法

6.5. 在CompletableFuture对象出现异常时,可使用exceptionally方法恢复,可以将一个函数注册到该方法,返回一个替代值

6.6. 如果你想有一个map,包含异常情况和正常情况,请使用handle方法

6.7. 要找出CompletableFuture对象到底出了什么问题,可使用isDone和isCompleted-Exceptionally方法辅助调查

6.8. 常用情境是异步执行一段代码,该段代码计算并返回一个值

7. 响应式编程

7.1. 一种声明式编程方法,它让程序员以自动流动的变化和数据流来编程

7.2. RxJava

7.2.1. 为了组合异步和基于事件的系统流程而设计的

7.2.2. 处理一组值

7.3. 使用基于Lambda表达式的回调,很容易实现事件驱动架构

8. Stream是为构建内存中集合的计算流程而设计的

读Java8函数式编程笔记06_Lambda表达式编写并发程序的更多相关文章

  1. Java8函数式编程以及Lambda表达式

    第一章 认识Java8以及函数式编程 尽管距离Java8发布已经过去7.8年的时间,但时至今日仍然有许多公司.项目停留在Java7甚至更早的版本.即使已经开始使用Java8的项目,大多数程序员也仍然采 ...

  2. C# 函数式编程 —— 使用 Lambda 表达式编写递归函数

    最近看了赵姐夫的这篇博客http://blog.zhaojie.me/2009/08/recursive-lambda-expressions.html,主要讲的是如何使用 Lambda 编写递归函数 ...

  3. Java8函数式编程和lambda表达式

    文章目录函数式编程JDK8接口新特性函数接口方法引用函数式编程函数式编程更多时候是一种编程的思维方式,是一种方法论.函数式与命令式编程区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉 ...

  4. Java8函数式编程探秘

    引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...

  5. [2017.02.23] Java8 函数式编程

    以前学过Haskell,前几天又复习了其中的部分内容. 函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list.map.set,以及在这些数据结构上 ...

  6. Java8 函数式编程详解

    Java8 函数式编程详解 Author:Dorae Date:2017年11月1日23:03:26 转载请注明出处 说起Java8,可能很多人都已经知道其最大的改进,就是引入了Lambda表达式与S ...

  7. Java 函数式编程(Lambda表达式)与Stream API

    1 函数式编程 函数式编程(Functional Programming)是编程范式的一种.最常见的编程范式是命令式编程(Impera Programming),比如面向过程.面向对象编程都属于命令式 ...

  8. 关于Java8函数式编程你需要了解的几点

    函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...

  9. Java 函数式编程和Lambda表达式

    1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...

  10. java并发编程笔记(二)——并发工具

    java并发编程笔记(二)--并发工具 工具: Postman:http请求模拟工具 Apache Bench(AB):Apache附带的工具,测试网站性能 JMeter:Apache组织开发的压力测 ...

随机推荐

  1. 计算机系统大作业:Hello的一生

    计算机系统大作业 题 目 程序人生-Hello's P2P 专 业 计算机科学与技术 学 号 班 级 学 生 江水为竭 指导教师 刘宏伟 计算机科学与技术学院 2022年5月 摘 要 HelloWor ...

  2. 第一章:TypeScript快速入门

    一.TypeScript 开发环境搭建 1.TypeScript 是什么? TypeScript 是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,而且本质上向这个语言添 ...

  3. 2022春每日一题:Day 31

    题目:机器分配 设f[i][j]表示前i个机器,共分配了j个的最大值,枚举第i个机器分配个数,转移f[i][j]=max{f[i-1][k]+a[i][j-k]},此题只是加了个要输出 代码: #in ...

  4. K8s集群环境搭建

    K8s集群环境搭建 1.环境规划 1.1 集群类型 Kubernetes集群大体上分为两类:一主多从和多主多从 一主多从:一台master节点和多台node节点,搭建简单,但是有单机故障风险,适用于测 ...

  5. Day16:冒泡排序详解

    冒泡排序 冒泡循环有两层循环,第一层控制循环轮数,第二层循环代表元素比较的次数. 利用冒泡排序获得升序或者降序的数组 //利用冒泡排序将一个数组进行降序排序 //思路: //冒泡排序是将相邻元素进行比 ...

  6. i春秋Upload

    打开是一句普普通通的话,先查看源码,发现提示,我们需要post我们从i春秋得到的东西 得到了什么呢?不知道,去看看cookie,没什么特别的地方,再去抓包试试 找到了我们需要post的东西,不过这东西 ...

  7. tp6 requset获取参数的方式

    第一种:获取全部参数的值 request()->param() 1 第二种:获取排除某些字段的值,即获取其他值 request()->except(['serverToken','logi ...

  8. 函数调用时用const保护指针

    当调用函数并且把指向变量的指针作为参数传入时,通常会假设函数将修改变量(否则,为什么函数需要指针呢?).例如,如果在程序中看到语句 f(&x); 大概是希望f改变x的值.但是,f仅需检查x的值 ...

  9. go-carbon 1.5.3 版本发布, 修复已知 bug 和新增俄罗斯语翻译文件

    carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 awesome-go 收录,如果您觉得不错,请给个star吧 github.com/golang-m ...

  10. Jmeter 之在linux中监控Memory、CPU、I/O资源等操作方法

    在做性能测试时,单纯的只看响应时间.错误率.中间值远远不够的,有时需要监控服务cpu.内存等指标来判断影响性能的瓶颈在哪. 操作步骤: 一.Linux下配置jmeter环境 1.在linux环境下安装 ...