zoukankan      html  css  js  c++  java
  • 正确使用volatile场景--状态标志

    同步机制:volatile

    特点:可见性;不具备原子性

    每个线程有自己单独的内存;如果线程1和线程2公用一个变量name;如果两个线程并发进行,并且需要访问变量name;如果这个变量具有了可见性,线程1和线程2就可以获取到实时的变量name的最新数据;

    下边这篇博客的结论说明了 volatile并不适合使用在并发当中,不能解决安全性问题

    http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html

    安全使用volatile的模式一:状态标志

    public class HelloWorld {
        public static void main(String[] args) {
            TimeDemo.runTime();
        }
    }
    public class ThreadTest {
        public static volatile boolean FLAG = true;
        public Thread Thread1(){
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    Task.ASTAT = false;
                }
            });
            return thread;
        }
        public Thread Thread2(){
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.print("线程2获得状态AStat=" + Task.ASTAT);
                }
            });
            return thread;
        }
    }

    线程2中可以获取到线程1更改的数据;这个例子写的确实不太好啊;偶然性太大;

    先记录,在修改吧

  • 相关阅读:
    自定义函数
    取小数的有效值函数
    数据恢复bak
    脚本启动windows服务
    创建表
    PostgreSQL和SQL SERVER的数据库差异
    vs2019莫名自动退出调试状态
    postgresql 设置调试
    Google Web字体,让你的网页更迷人
    翻译:观察者模式—使用JavaScript实现
  • 原文地址:https://www.cnblogs.com/fooller/p/7426547.html
Copyright © 2011-2022 走看看