1.案例代码:
public class TestVolitle {
public static void main(String[] args) {
ThreadDemo td = new ThreadDemo();
new Thread(td).start();
while (true){
if(td.isFlag()){
System.out.println("-------------");
break;
}
}
}
}
class ThreadDemo implements Runnable{
private boolean flag = false;
@Override
public void run() {
try{
Thread.sleep(200);
}catch (Exception e){
e.printStackTrace();
}
flag = true;
System.out.println("flag=" + isFlag());
}
public boolean isFlag(){
return flag;
}
}
对于flag字段,当不加volatile修饰时,运行结果如下:

当加volatile关键字修饰时,运行结果如下:

本文通过一个具体的代码案例,深入解析了Java中Volatile关键字的作用。对比了使用与未使用Volatile修饰变量时,多线程环境下程序的行为差异,强调了Volatile在确保线程间变量可见性方面的重要性。
22万+

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



