volatile用于保证数据的同步,也就是可见性
package com.lzy.others;
public class TestVolatile {
private /*volatile*/ static int num=0;
public static void main(String[] args) {
new Thread(()->{
while(num==0) {//死循环 为了让CPU"忙"的没时间看num是否有改变,此处也不要写代码
}
}) .start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
num=1;
}
}
代码在没有加入volatile时

这儿会一直在运行,加入volatile后,内部会直接同步num=1;程序在1秒后停止
本文通过一个简单的Java示例展示了volatile关键字如何确保多线程环境下变量的同步更新,即可见性。当未使用volatile时,程序可能因缓存不一致而无法终止循环,加入volatile后能正确地终止循环。
263

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



