Java volatile 关键字到底是什么|得物技术
Source :
mp.weixin.qq.com
volatile 作为 Java 的基础关键字,一直是个熟悉又神秘的存在。我们在日常做并发编程的过程中经常用到,我们知道在什么场景下需要用到,但却始终不清楚底层究竟做了什么。互联网上搜出来的大多数博客都在解释 volatile 关键字是为了解决指令重排序、内存可见性问题,或是什么内存屏障、缓存一致性协议一类“形而上的词汇”。而究竟什么是指令重排序,为什么要重新排序,什么是可见性问题,底层原理是什么,volatile 又是如何解决的却鲜有提及。引得 Java 开发者们如雾里看花,线上线下充满了疑惑的空气。本文将浅浅探究一下这一切的底层原理,一起来学习“没有用”的知识,各位看官看懂了可以出去和面试官对线。