Java线程(2) 学习笔记
线程安全的三大特性
**原子性:**一个或多个操作,要么全部执行并且执行过程不被任何因素打断,要么不执行。
**可见性:**一个线程对某个共享变量修改,另外的线程可以立即看到。
**有序性:**程序执行的顺序按照代码的先后顺序进行。
volatile关键字
Volatile是一种轻量级的同步机制
1.保证可见性
2.不保证原子性 (例如 i++)
3.禁止指令重排序
防重排序
实例化一个对象可以分三个步骤:
分配内存空间初始化对象将内存空间的地址赋值给对应的引用
但操作系统可以对指令进行重排序:
分配内存空间将内存空间的地址赋值给对应的引用初始化对象
若是此流程,多线程下可能将一个未初始化的对象引用暴露出来。
Volatile的原理和实现机制
volatile变量的内存可见性是基于内存屏障实现的,内存屏障又称内存栅栏,是cpu的指令。在程序运行时,为了提高执行率,编译器和处理器会对
Java线程(2) 学习笔记最先出现在Python成神之路。
共有 0 条评论