一、前言
多个线程访问共享变量,会出现一个线程修改变量值后,其他线程看不到最新值的情况。
二、代码
package com.zjl.study.多线程.volatile关键字;
/**
* Created by zjl 2022/5/29
**/
public class 多线程下变量不可见性问题 {
public static void main(String[] args) {
// 1、启动子线程,将线程中的flag值改为true
VolatileThread thread = new VolatileThread();
thread.start();
// 2、主线程
while (true){
if(thread.isFlag()){
System.out.println("主线程执行,此时flag已经改为true!!!!");
}
}
}
}
class VolatileThread 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值变为true");
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}