zoukankan      html  css  js  c++  java
  • AtomicBoolean介绍与使用


    介绍:在这个Boolean值的变化的时候不允许在之间插入,保持操作的原子性


    方法: compareAndSet(boolean expect, boolean update)

                这个方法主要两个作用        

                1. 比较AtomicBoolean和expect的值,如果一致,执行方法内的语句。其实就是一个if语句      

                 2. 把AtomicBoolean的值设成update       

                比较最要的是这两件事是一气呵成的,这连个动作之间不会被打断,任何内部或者外部的语句都不可能在两个动作之间运行。为多线程的控制提供了解决的方案。


    demo:


    1. private static AtomicBoolean initialized = new AtomicBoolean(false);  
    2.   
    3. public void init()  
    4. {  
    5.    if( initialized.compareAndSet(false, true) )  
    6.    {  
    7.        // 这里放置初始化代码....  
    8.    }  
    9. }  


    普通方法:
    1. public static volatile initialized = false;  
    2.   
    3. public void init()  
    4. {  
    5.     if( initialized == false ){  
    6.         initialized = true;  
    7.         // 这里初始化代码....  
    8.     }  


    为了避免对象同一时刻多次被访问,保证永远只有一个线程在访问

  • 相关阅读:
    nginx基础系列
    常用MS-SQL写法整理
    Spring Bean装配方式
    sql获取该周的开始结束日期
    Docker基础入门实践
    vim常规操作
    基于CentOS的SSHD服务的Docker镜像
    RedisClient For .Net
    Redis数据类型及使用场景
    CentOS下安装Redis
  • 原文地址:https://www.cnblogs.com/hqlong/p/6586798.html
Copyright © 2011-2022 走看看