前言
volatile关键字是面试中常问的知识点,包括三点:可见性、有序性、非原子性
。接下来就说一下这三点。
每个 Java 线程都有⾃⼰的⼯作内存。操作数据,⾸先从主内存中读,得到⼀份拷⻉,操作完毕后再写回主内存
JMM可能带来可⻅性、原⼦性和有序性问题
System.out.println
里有 synchronized
关键字修饰,也是触发可见性方法之一,如下图计算机在执⾏程序时,为了提⾼性能,编译器和处理器常常会对指令做重排,⼀般分以下三种
如图方法 test 中的 a、b 变量毫无关联,则编译器和处理器可能会先执行 b 变量的赋值,而不是一定按顺序从上往下执行
AtomicInteger
来进行自增,如下图结语
这就是 volatile 关键字面试中常问的知识点,希望对您有帮助。