作用:
1.线程可见
如果多个线程都使用了同一个变量,那么其中一个线程改变了该变量,其他线程都会读取到该变量的最新值。加上volatile关键字,强制线程每次读取该值的时候都去“主内存”中取值。
2.防止指令重排序
class ThreadVolatileDemo extends Thread {
public volatile boolean flag = true;
@Override
public void run() {
System.out.println("开始执行子线程....");
while (flag) {
}
System.out.println("线程停止");
}
public void setRuning(boolean flag) {
this.flag = flag;
}
}
public class ThreadVolatile {
public static void main(String[] args) throws InterruptedException {
ThreadVolatileDemo threadVolatileDemo = new ThreadVolatileDemo();
threadVolatileDemo.start();
Thread.sleep(3000);
threadVolatileDemo.setRuning(false);
System.out.println("flag 已经设置成false");
Thread.sleep(1000);
System.out.println(threadVolatileDemo.flag);
}
}

本文介绍了Java中volatile关键字的功能,包括确保线程间变量的可见性和防止指令重排序。通过示例代码展示了如何在多线程环境下使用volatile保证线程安全,解释了其在并发编程中的重要性。
24万+

被折叠的 条评论
为什么被折叠?



