标签:目的 共享 访问 false 可见 rgb 静态 rpc except
public class VolatileExample extends Thread{ //设置类静态变量,各线程访问这同一共享变量 private static boolean flag = false; //无限循环,等待flag变为true时才跳出循环 public void run() {while (!flag){};} public static void main(String[] args) throws Exception { new VolatileExample().start(); //sleep的目的是等待线程启动完毕,也就是说进入run的无限循环体了 Thread.sleep(100); flag = true; } }
预计效果->程序正常结束
实际效果->程序死循环
解决方案->volatile 修饰变量
作用:
上面代码,主线程获取变量值到工作内存中,修改了变量后,并刷新到主内存中,但是,VolatileExample线程从主内存中复制的变量并未得到变量已经修改的通知,导致了多线程情况先变量不可见性。
标签:目的 共享 访问 false 可见 rgb 静态 rpc except
原文地址:https://www.cnblogs.com/xyzxy/p/14292343.html