ScrollView Zookeeper安装 网站favicon图标制作 acm ajax linq swing serialization interface count react router ionic3 Pure CSS vuejs视频教程 vue安装教程 jquery绑定事件的方法 list获取最后一个元素 iot系统 mysql自连接 python3教程 python编程教程 python创建对象 python图形界面开发 python网页编程 java集合框架 javaforeach java中基本数据类型 linux密码 linux装机 电子书之家 redis入门指南 su版本转换器 超星网课助手 银头鲑鱼 文字转语音软件免费版 珊瑚版 php随机数 保留两位小数的函数 python字符串 proxies
当前位置: 首页 > 学习教程  > 编程语言

Voliatile关键字的用途

2020/7/24 9:28:59 文章标签:

一、Voliatile
1.1、什么是Volatile
Voliatile关键字的作用是变量在多个线程之间可见
class ThreadVolatileDemo extends Thread{
public volatile boolean flag=true;//此处不添加Volatile关键字,结果显示为false,线程还会一直运行,会出现线程安全问题
@Override
public void run(){
System.out.println(“子线程开始执行。。。”);
while (flag){

    }
    System.out.println("子线程结束。。。");
}
public void isRun(boolean flag){
    this.flag=flag;
}

}
/**

  • Created with IntelliJ IDEA.
  • @classDesc: 功能描述()
  • @Auther:
  • @Date: 2020/07/23/9:56
  • @Description:
    */
    public class VoliatileDemo {
    public static void main(String[] args) throws InterruptedException {
    ThreadVolatileDemo t1 = new ThreadVolatileDemo();
    t1.start();
    Thread.sleep(300);
    t1.isRun(false);
    System.out.println(t1.flag);
    }
    }

结果设置为false为什么还一直在运行?
原因: 线程之间是不可见的,读取的是副本,没有及时读取到主内存结果。
解决办法:使用Volatile关键字将解决线程之间的可见性,强制线程每次读取该值的时候都去“主内存”中取值


本文链接: http://www.dtmao.cc/news_show_50083.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?