Java语言规范第三版中对volatile的定义如下:
Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致性的更新,线程应该确保通过排他锁
单独获得这个变量。
volatile有时候比锁更加方便,比如一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的
值是一致性的。
volatile是如何来保证可见性的? 需要查看Java代码转换成汇编代码之后,具体执行的过程可参考《Java并发编程的艺术》
第二章,或者其他资料。(主要是我对汇编不太熟)
还涉及到CPU和内存及其缓存的原理。
IT技术和行业交流群 417691667