volatile这一篇就够了
下文笔者将详细介绍volatile这一篇文章,将使你真真的了解到volatile关键字的用法,如下所示:
volatile关键字 的功能:
我们都知道volatile关键字有两个功能:
1.保证变量的内存可见性
2.禁止指令重排序
可见性,例:
/** * 变量的内存可见性例子 * * @author java265.com */ public class VolatileExample { /** * main 方法作为一个主线程 */ public static void main(String[] args) { MyThread myThread = new MyThread(); // 开启线程 myThread.start(); // 主线程执行 for (; ; ) { if (myThread.isFlag()) { System.out.println("主线程访问到 flag 变量"); } } } } /** * 子线程类 */ class MyThread extends Thread { private boolean flag = false; @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 修改变量值 flag = true; System.out.println("flag = " + flag); } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } }