volatile关键字简单摘要

volatile就可以说是java虚拟机提供的最轻量级的同步机制

特性:

1.保证共享变量的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的——要了解主存、高速缓存还有Java内存模型中线程的工作内存、主存等概念。

2.禁止指令重新排序,一定程度上保证有序性。——要理解Java内存模型为了提高性能,优化效率,允许编译器和处理机对指令进行重排的概念。

3.不保证原子性。——要知道,Java中好像只有对基本数据类型的最简单的读取和赋值操作是原子性的操作。

学习文章:

https://www.cnblogs.com/dolphin0520/p/3920373.html——《Java并发编程:volatile关键字解析 》讲的很好,清楚明了。

https://www.jianshu.com/p/157279e6efdb——《让你彻底理解volatile》对底层的知识讲得很详细,特别是讲如何防止指令重排序,内存屏障这些。

其他的补充知识:

https://www.jianshu.com/p/d52fea0d6ba5——《java内存模型以及happens-before规则》

https://www.cnblogs.com/gtarcoder/p/5295281.html——《cpu缓存与多线程 》

原文地址:https://www.cnblogs.com/wangshen31/p/10444142.html