JMM和volatile

1JMM(Java Memory Model)
JMM是指Java内存模型,不是JVM,不是所谓的栈、堆、⽅法区。
每个Java线程都有⾃⼰的⼯作内存。操作数据,⾸先从主内存中读,得到⼀份拷⻉,操作完毕后再写回
到主内存。

JMM可能带来可⻅性、原⼦性和有序性问题。
所谓可⻅性,就是某个线程对主内存内容的更改,应该⽴刻通知到其它线程。
所谓原⼦性,是指⼀个操作是不可分割的,不能执⾏到⼀半,就不执⾏了。
所谓有序性,就是指令是有序的,不会被重排。

2volatile


image.png

volatile 关键字是Java提供的⼀种轻量级同步机制。
它能够保证可⻅性和有序性
但是不能保证原⼦性
禁⽌指令重排

你可能感兴趣的:(JMM和volatile)