当一个线程修改了一个volatile变量的值,这个修改对其他线程是立即可见的,也就是说,如果一个线程修改了一个volatile修饰的变量的值,那么其他线程在读取这个变量的值时会立刻看到最新修改的值,而不会使用之前的缓存值。
Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。
今天来介绍下Java中的volatile关键字,volatile也是Java并发编程中不得不看的一个部分,在之前的文章中说到的双重检测单例模式单例模式和 单例模式, 其实也跟volatile也有不解之缘,另外volatile跟计算机体系架构也是有着千丝万缕的关系。
用最简单的大白话,加上多张图给大家说一下,volatile到底是什么?当然本文不会把理论扎的太深,因为一下子扎深了文字太多,很多同学还是会不好理解。本文仅仅是定位在用大白话的语言将volatile这个东西解释清楚,而涉及到特别底层的一些原理和技术问题,以后有机会开文再写。