Stream Api是什么?特点?

概念:
Java8引入的Stream流式编程,可以对数组/集合进行聚合操作(遍历、映射、过滤等),以函数式风格编写代码
特点:

  1. 不是数据容器,只是数据视图
  2. 惰性求值,中间操作只定义流程,终止操作才开始执行
  3. 可串行/并行流

volatile的作用?能保证原子性吗?

作用:

  1. 可见性
    1.1. 读取数据时,将主内存数据刷新到工作内存
    1.2. 写入数据时,将工作内存数据刷新到主内存
  2. 禁止指令重排
    2.1. 写操作。在写入前插入storestore,保证所有普通读写操作在volatile之前,在写入后插入storeload,保证所有读操作在volatile之后
    2.2. 读操作。在读操作之后,插入loadload和loadstore,不能把 volatile 变量之前的指令重排到它后面;不能把 volatile 变量之后的指令重排到它前面