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. 幂次方表达:p1010

    1 题目ID: P1010 [NOIP1998 普及组] 幂次方 2 题目描述: 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方 ...

  2. Dubbo-时间轮设计

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  3. 2022年rhce最新认证—(满分通过)

    RHCE认证 重要配置信息 在考试期间,除了您就坐位置的台式机之外,还将使用多个虚拟系统.您不具有台式机系统的 root 访问权,但具有对虚拟系统的完整 root 访问权. 系统信息 在本考试期间,您 ...

  4. go mod常用命令 已经 常见问题

    最近接触到go mod,网上查了查资料,这里记录一下. 1 介绍 1.1.go mod是什么 go mod 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地 ...

  5. 谈软件-Java重构案例之Switch_Statements

    1.软件重构,大量swich语句如何重构 2.使用 ide 使用 快捷键ctrl+alt+shift+T调出重构菜单,选择method对之前的for循环重构一个method 3.得到一个新的方法,使用 ...

  6. 记一次mybatis性能问题分析过程

    说明 今天发现个2个问题,一是mybatisplus执行一条某个字段值比较长(约1.8M的文本)的INSERT语句耗时要90s+;二是读取这个1.8M文本返回给前端耗时6min.查查查查了半天搞不清楚 ...

  7. python(牛客)试题解析2 - 中等

    导航 一.NC192 二叉树的后序遍历 二.NC117 合并二叉树 三.求长度最长的的连续子序列使他们的和等于sum 四.按顺序取出固定长度内容并合并两个数组为一个新数组 五.输出所有结果小于k的整数 ...

  8. springboot接收前端传参的几种方式

    1.通过HttpServletRequest接收,常用于获取请求头参数以及Cookie,适用于GET 和 POST请求方式,以下两种方式: @GetMapping("/demo1" ...

  9. 关于linux建立u盘legacy启动方式引导

    前言 我一直在用linux,但是我在linux制作pe启动盘无法实现,windows有很多制作pe启动盘的软件,如大白菜,u深度什么的,但是linux没有对应的软件,所以我想写一个类似的工具,那么就有 ...

  10. 基于opencv实现简单人脸检测

    作用:在视频中自动检测出人脸 使用内容:灰度转换,分类器,矩形框选,圆形框选,摄像头读取及释放 代码逻辑: 先读取摄像头后, 对摄像头拍摄到的图片进行逐帧分析, 并对图像进行灰度转换后使用类选择器识别 ...