java内存模型的简称,是一组概念和约定。
Volatile是什么?有什么作用?Volatile 是 java 虚拟机提供的轻量级同步机制,主要有三个特性:
- 保证可见性;
- 不保证原子性;
- 禁止指令重排。
-
线程解锁前,必须把共享变量立刻刷回主存。
-
线程加锁前,必须读取主存中的最新值到工作内存(高速缓存)中。
-
加锁和解锁必须是同一把锁。
private static int num = 0;
public static void main(String[] args) {
new Thread(()->{
while (num == 0) {}
}).start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
num = 1;
System.out.println(num);
}
在上面这个例子中,子线程在num等于0的条件下一直循环,即便主线程把num置为1,子线程中的num也不会改变,子线程还是在一直循环。
原文链接:java内存模型及volatile关键字解析



