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

    先记录,在修改吧

  • 相关阅读:
    搭建GIT服务器
    TCP/IP原理简述
    GIT使用—补丁与钩子
    GIT使用—创建并使用远程版本库
    Tomcat的工作模式和运行模式
    GIT使用—分支与合并
    GIT使用—提交的查找与变更
    南京理工大学
    学习(踩坑)记录——新建工程
    2018一年总结
  • 原文地址:https://www.cnblogs.com/fooller/p/7426547.html
Copyright © 2011-2022 走看看