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更改的数据;这个例子写的确实不太好啊;偶然性太大;

    先记录,在修改吧

  • 相关阅读:
    maven 依赖阿里云仓库
    jacob
    mysql
    简单明了区分escape、encodeURI和encodeURIComponent(转载)
    eclipse
    StringBuffer的构造方法和capacity的返回值关系
    toString和valueOf的区别
    js中ajax返回数据
    springmvc 文件上传
    springmvc 上传文件报错 String不能转成multipartFile
  • 原文地址:https://www.cnblogs.com/fooller/p/7426547.html
Copyright © 2011-2022 走看看