最近回归Java基础的一些内容,其中volatile的核心原理不是很理解(大概知道限制指令重排 但是什么场景使用还是心存疑问~) 分享下觉得不错的原理分析。
importnew上面的分享,这个公众号关注了好几年,很多底层的原理解释的非常清晰。
http://www.importnew.com/24082.html
深入理解volatile关键字
1.volatile保证可见性
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。但是针对操作时非原子性的指令,并非线程安全。
2)禁止进行指令重排序。
网友评论