第4章 并发基础篇
为什么要用lambda表达式,在写业务的时候,会附带数据和数据类型,为了让业务看起来更流畅,不用判断数据类型。
在Linux中,使用竖线| 表示管道。
Linux管道的作用就是,一个进程输出数据,作为另外一个进程的输入。
Java流管道,说的是一个计算过程的输出,作为另外一个过程的输入。
函数式接口,就是实现匿名函数
函数式编程,就是管道编程。
接口中可以定义方法,动态的方法是defalut,也可以定义静态方法。
Lambda表达式会消耗一些性能,但是换来的是业务的可读性,所以在底层的算法当中,不适用lambda表达式。(lambda)
纯函数:函数内部的操作,都是对输入的参数操作,不对其他参数操作。
非纯函数:在函数内容不做了其他操作
纯函数的作用:防止程序报错找不到原因
进程的输入流和输出流都是文件的,如果标准输出流发生了问题,那么System.out.println就会报错。
并行计算分为3个步骤:
使用spliter进行分割数据源,开启cpu核数 - 1 个线程
分割的等分,每份都互相独立,分割的大小是1024,(拆分的方法是spliter的类,实现是在集合当中)
合并计算的结果
/ 拆多少份,创建多少个线程**
1, 拆分是通过spliter,每份的大小,默认每份1024,如果拆了100份,线程池是5个线程,轮流去执行每份数据,最后做合并结果
2, 启动的线程池的大小是通过,forkJoinPool设置的,默认是cpu核心数-1个线程。
*/
纯函数:函数内部处理的数据,都是通过函数的参数传入的。
所以在lambda表达式中,如果是非传入的数据,就需要转换成immutable,有利于并发