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

    先记录,在修改吧

  • 相关阅读:
    常见的单链表题目
    一个string类的几个函数
    strcpy和memcpy的区别
    字符串及 strcpy几种写法
    什么函数不能声明为虚函数
    STL中Vector和List的底层数据结构
    C/C++堆、栈及静态数据区详解
    tcp四次握手
    几个知识点
    内存对齐的规则与作用
  • 原文地址:https://www.cnblogs.com/fooller/p/7426547.html
Copyright © 2011-2022 走看看