1.是什么?
volatile是Java中的关键字,用来修饰被不同线程访问和修改的变量。
volatile是java虚拟机提供的轻量级的同步机制。
2.作用?
1)线程见的可见性
保证被该关键字修饰的变量的修改,在线程间的可见性。
eg:线程A修改该值,会强制将这个新值刷回主内存,当线程B有该值的旧值缓存,
会被强制失效过期,不允许再次使用,如果线程B再次读取该值,会从主内存
重新加载新值到本地内存。
2)禁止指令重排序
3.总结
1.volatile主要作用是保证可见性和有序性;
2.不能保证操作的原子性,原子性的问题,需要依赖synchronized、ReentrantLock
等加锁机制来解决。