https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html
https://www.infoq.cn/article/java-memory-model-4
原子性:对任意单个 volatile 变量的读 / 写具有原子性,但类似于 volatile++ 这种复合操作不具有原子性。
volatile 变量规则:对一个 volatile 域的写,happens- before 于任意后续对这个 volatile 域的读
Reads and writes are atomic for all variables declared volatile (including long and double variables).
This means that changes to a volatile variable are always visible to other threads.
// volatile保证了内存可见性,保证任何时刻,所有线程看到的共享变量都是一样的
volatile int count = -1;
Using volatile variables reduces the risk of memory consistency errors
[图片上传中...(image.png-784ec8-1562041819606-0)]