Java中的volatite关键字:
(可见性)
1. Java中的内存模型:
(1) 可见性:使用volatite、sychronized和final来操作可见性
指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。(volatite关键字修饰的对象)
(2) 原子性:使用sychronized在lock、unlock来操作原子性
举例:a = 0;(原子操作) / a++;(非原子操作,存在线程安全作用)
(3) 有序性:使用关键字volatite和sychronized关键字来操作有序性
问题:程序是按照代码的先后顺序执行,但JVM会发生指令重排
单线程无影响、多线程有影响。
2. volatite原理(稍弱的同步机制):
(1) volite两大特性:
① 保证“可见性”;(但不能保证“原子性”;)
因此:不能保证线程安全问题;
② 禁止指令重排,保证“有序性”;
(2) Volatite变量相对于普通变量的最大特点:
保证了新值能立即同步到主内存,以及在使用前从住内存刷新。