说到volatile,一些参加过面试的同学对此肯定不陌生。
它是面试官口中的常客,但是平时的编码却很少打照面(起码,我是这样的)。
最近的面试,我也经常会问到volatile相关的问题,比如volatile和sychronized的区别;volatile的使用场景;volatile的实现原理等等。
问这些问题其实主要还是考察多线程、锁等方便的知识储备。虽然volatile在我们日常编码使用不多,但是他的实现思想以及背后牵扯的一些概念还是值得我们学习和思考的。
举例首先我们来看一个例子
public class VolatileExample extends Thread { private static boolean flag = false; public void run() { while (!flag) { } } public static void main(String[] args) throws Exception { new VolatileExample().start(); Thread.sleep(100); flag = true; } }