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;
}
}


