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.     }  


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

  • 相关阅读:
    react结合antd4.0和umi3.0的404界面
    小程序自带组件自定义tabbar
    移动安全学习清单
    跨域资源共享 CORS 详解(转)
    docker常用命令总结
    XSS绕过小结
    mysql的order by注入
    本地文件包含漏洞利用姿势
    XSS绕过<>进行测试
    clamscan+clam-freshclam.service服务启停
  • 原文地址:https://www.cnblogs.com/hqlong/p/6586798.html
Copyright © 2011-2022 走看看