文章目录
- Stream流
- 思想
- 作用
- 三类方法
- 获取方法
- 单列集合(Collection[List,Set
- 双列集合Map(不能直接获取)
- 数组
- 同一类型元素(Stream中的静态方法)
- 常见的中间方法
- 终结方法
- 收集方法
- Optional类
- 线程
- 相关概念
- 多线程
- 概念
- 实现方式
- 继承Thread类
- 实现Runnable接口
- 比较
- 常用方法
- 线程安全
- 产生的原因
- 解决思想
- 同步
- 同步代码块
- 同步方法
- Lock锁机制
Stream流
思想
流水线那样工作
作用
针对集合进行简化开发
Stream流的使用通常需要Lambda表达式
三类方法
- 获取方法:获取流(创建一个流水线)
- 中间方法:在流水线上进行操作
- 终结方法:流水线上的操作结束了,要关闭流水线(最后一个操作),一个Stream流只能有一个终结方法
获取方法
单列集合(Collection[List,Set
Stream 流对象 = 单列集合.stream();
双列集合Map(不能直接获取)
- 先通过keySet()或EntrySet()获取Set集合
- Stream 流对象 = Set集合.stream();
数组
Stream 流对象 = Arrays.stream(数组);
同一类型元素(Stream中的静态方法)
Stream 流对象 = Stream.of(同一类型元素,同一类型元素,…);
常见的中间方法
终结方法
收集方法
Optional类
可以用这个类中的方法判断是否为空
线程
相关概念
并行:在同一时刻,有多个任务在多个CPU上同时执行
并发:在同一时刻,有多个任务在一个CPU上交替执行
进程:正在执行的程序
线程:应用程序中做的事情,是程序运行的基本执行单元
当操作系统执行一个程序时,会在系统中建立一个进程,该进程必须至少建立一个线程(这个线程被称为主线程),作为这个程序运行的入口点。因此,在操作系统中运行的任意程序都至少有一个线程。
多线程
概念
是指从软件或者硬件上实现多个线程并发执行的技术
实现方式
继承Thread类
- 创建一个类继承Thread类
- 在类中重写run方法(线程执行的任务在该方法中)
- 创建线程对象,调用线程的start方法开启线程
实现Runnable接口
- 定义一个类实现Runnable接口,并重写run方法(可以用匿名内部类实现)
- 创建任务对象
- 使用还有Runnable参数的构造方法创建线程对象并指定对象
- 调用线程的start方法,开启线程
比较
- 只能单继承,线程任务和线程功能都在Thread子类中
- 能多实现,线程任务在Runnable接口实现类中,线程功能在Thread类中;有解耦的好处
接口一是用来制定规则,二是用来降低耦合(紧密连接的程度)
常用方法
线程安全
产生的原因
多个线程对于同一个数据,进行读写操作,造成数据错乱
解决思想
把多个线程操作的共享数据,存放到一个安全的环境中
Java语言基于线程安全的问题,提供了同步机制
同步
同步代码块
同步方法