Java教程

【学习打卡】第14天+并发编程-流计算

本文主要是介绍【学习打卡】第14天+并发编程-流计算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

课程章节:第4章 并发基础篇

主讲老师:求老仙

课程内容:

第4章 并发基础篇

课程收获:

随着时间产生的数据序列

为什么要用lambda表达式,在写业务的时候,会附带数据和数据类型,为了让业务看起来更流畅,不用判断数据类型。

问题1)什么是Linux中的管道?和Java流中的管道?

在Linux中,使用竖线| 表示管道。

Linux管道的作用就是,一个进程输出数据,作为另外一个进程的输入。

Java流管道,说的是一个计算过程的输出,作为另外一个过程的输入。

  1. 函数式接口,就是实现匿名函数

  2. 函数式编程,就是管道编程。

  3. 接口中可以定义方法,动态的方法是defalut,也可以定义静态方法。

  4. Lambda表达式会消耗一些性能,但是换来的是业务的可读性,所以在底层的算法当中,不适用lambda表达式。(lambda)

问题2)什么是纯函数和非纯函数?以及他的副作用?

纯函数:函数内部的操作,都是对输入的参数操作,不对其他参数操作。

非纯函数:在函数内容不做了其他操作

纯函数的作用:防止程序报错找不到原因

进程的输入流和输出流都是文件的,如果标准输出流发生了问题,那么System.out.println就会报错。

问题3)并行处理?

并行计算分为3个步骤:

  1. 使用spliter进行分割数据源,开启cpu核数 - 1 个线程

  2. 分割的等分,每份都互相独立,分割的大小是1024,(拆分的方法是spliter的类,实现是在集合当中)

  3. 合并计算的结果

/ 拆多少份,创建多少个线程**

  • 1, 拆分是通过spliter,每份的大小,默认每份1024,如果拆了100份,线程池是5个线程,轮流去执行每份数据,最后做合并结果

  • 2, 启动的线程池的大小是通过,forkJoinPool设置的,默认是cpu核心数-1个线程。

*/

问题4)为什么使用函数式编程,使用纯函数?

纯函数:函数内部处理的数据,都是通过函数的参数传入的。

所以在lambda表达式中,如果是非传入的数据,就需要转换成immutable,有利于并发

这篇关于【学习打卡】第14天+并发编程-流计算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!