5.Stream流:
关注对数据的运算
流式的对上一步得到的结果进行进一步运算
特点:
1.流是一次性的流,操作完毕之后就被损毁,每次中间操作都会返回一个持有 结果的新的流
2.流本身不能存储数据,数据真实存储在数据源中,而流描述的是对数据的运算
3.流不会改变数据流中的数据
4.延迟执行|惰性加载
使用步骤:
1.获取流
1)Collection.stream()
2)Arrays.stream()
3)Stream.of()
2.中间操作: 每次执行返回新的流
filter()
limit()
skip()
distinct()
排序: sorted() 默认比较器|排序规则|自然排序对数据做默认升序排序
排序: sorted(Comparator) 外部比较器|定值排序对数据做默认升序排序
映射 : map(Function) 接收lambda,将stream操作每一个元素应用与参数函数,实现将元素转换成为其他形式|提取信息.最后返回持有所有运算后结果的新的流
3.终止行为
Stream终止行为:
遍历 foreach()
匹配
allMatch-检查是否匹配所有元素
anyMatch-检查是否至少匹配一个元素
noneMatch-检查是否没有匹配所有元素
查找
findFirst-返回第一个元素
findAny-返回当前流中的任意元素
count-返回流中元素的总个数
max-返回流中最大值
min-返回流中最小值
归约 也称缩减,顾名思义,是把一个流缩减成一个值,能实现对集合求和、求乘积和求最值操作。
reduce(BinaryOperator) stream操作的每两个数据通过给定参数进行运算,最终运算出一个结果返回
Treduce(T identity, BinaryOperator accumulator); identity作为第一次运算的第一份操作数,BinaryOperator每次运算的规则
收集
collect()收集,可以说是内容最繁多、功能最丰富的部分了。
从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。
collect主要依赖java.util.stream.Collectors 类内置的静态方法。
二Thread:
Thread
多线程: 了解,理解,基础的使用
三高网站 : 高可用 高性能 高并发
线程 : 程序执行中的执行顺序流
多线程 : 多任务执行,多路径执行,多个顺序流同时执行就是多线程
多线程特点:
性能高,效率高,容易出错,需要特别注意,可以出现数据不安全问题
注意:很多多线程都是模拟出来的,其实同一时刻的喝水与讲课无法同时进行,但是因为切换的非常快,造成了同时执行的错觉
一个cpu统一时刻只能调度一个线程,但是可以快速切换
线程 与 进程:
进程 : 系统中的程序,一个进程中包含1~n个线程
每个进程都用于独立的代码与数据空间
进程切换开销较大
进程是资源分配的最小单位
线程 : 轻量级的进程
多个线程共享进程的资源,每个线程都用于独立的运行站与程序计数器,线程之间互不影响
线程之间切换开销小,线程的切换不由程序猿控制,只有cpu说了算
线程是cpu调度的最小单位
进程与线程都存在5种状态 : 新生 就绪 运行 阻塞 终止
学习线程的内容:
1.创建开启线程的方式 *****
1.继承Thread类,重写run方法+ start开启线程
2.实现Runnable接口,重写run方法 + start开启 - >推荐
优点: 接口可以多实现
可以实现资源共享
3.实现juc包下Callable接口,重写call方法+ 线程池开启线程 --> 了解
2.线程状态
3.线程安全问题 ****
4.线程通信