zoukankan      html  css  js  c++  java
  • AtomicBoolean介绍

    网上资料:

    使用 AtomicBoolean 高效并发处理 “只初始化一次” 的功能要求:

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

    普通方式:

    1 publicstatic volatile initialized = false;
    2  
    3 publicvoid init()
    4 {
    5 if( initialized == false){
    6 initialized = true;
    7 // 这里初始化代码....
    8 }
    9 }

    帮助文档:

    java.util.concurrent.atomic 
    类 AtomicBoolean

    java.lang.Object
      继承者 java.util.concurrent.atomic.AtomicBoolean
    
    所有已实现的接口:
    Serializable

    public class AtomicBoolean
    extends Object
    implements Serializable

    可以用原子方式更新的 boolean 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicBoolean 可用在应用程序中(如以原子方式更新的标志),但不能用于替换 Boolean

    从以下版本开始:
    1.5
    另请参见:
    序列化表格

    构造方法摘要
    AtomicBoolean() 
              使用初始值 false 创建新的 AtomicBoolean
    AtomicBoolean(boolean initialValue) 
              使用给定的初始值创建新的 AtomicBoolean
     
    方法摘要
     boolean compareAndSet(boolean expect, boolean update) 
              如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。
     boolean get() 
              返回当前值。
     boolean getAndSet(boolean newValue) 
              以原子方式设置为给定值,并返回以前的值。
     void lazySet(boolean newValue) 
              最终设置为给定值。
     void set(boolean newValue) 
              无条件地设置为给定值。
     String toString() 
              返回当前值的字符串表示形式。
     boolean weakCompareAndSet(boolean expect, boolean update) 
              如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。
     
    从类 java.lang.Object 继承的方法
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
     

    构造方法详细信息

    AtomicBoolean

    public AtomicBoolean(boolean initialValue)
    使用给定的初始值创建新的 AtomicBoolean

    参数:
    initialValue - 初始值

    AtomicBoolean

    public AtomicBoolean()
    使用初始值 false 创建新的 AtomicBoolean

    方法详细信息

    get

    public final boolean get()
    返回当前值。

    返回:
    当前值

    compareAndSet

    public final boolean compareAndSet(boolean expect,
                                       boolean update)
    如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。

    参数:
    expect - 预期值
    update - 新值
    返回:
    如果成功,则返回 true。返回 False 指示实际值与预期值不相等。

    weakCompareAndSet

    public boolean weakCompareAndSet(boolean expect,
                                     boolean update)
    如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。

    可能意外失败并且不提供排序保证,因此几乎只是 compareAndSet 的适当替代方法。

    参数:
    expect - 预期值
    update - 新值
    返回:
    如果成功,则返回 true。

    set

    public final void set(boolean newValue)
    无条件地设置为给定值。

    参数:
    newValue - 新值

    lazySet

    public final void lazySet(boolean newValue)
    最终设置为给定值。

    参数:
    newValue - 新值
    从以下版本开始:
    1.6

    getAndSet

    public final boolean getAndSet(boolean newValue)
    以原子方式设置为给定值,并返回以前的值。

    参数:
    newValue - 新值
    返回:
    以前的值

    toString

    public String toString()
    返回当前值的字符串表示形式。

    覆盖:
     Object 中的 toString
    返回:
    当前值的字符串表示形式。


     

    官方文档参考:http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/util/concurrent/atomic/AtomicBoolean.html

  • 相关阅读:
    题解 P1587 【[NOI2016]循环之美】
    PKUSC2019颓废记
    使用ImageIO.write上传二维码文件时候,提示系统找不到指定路径
    rt.jar包添加源文件只需要关联到已安装对应jdk目录下source.zip源码文件即可
    Kali Linux安装中文输入法
    性能测试(一)——理发店模型
    瑜伽,不仅仅是瑜伽,敬艾扬格大师
    为什么想做测试,我的测试开端
    责任链模式-Chain of responsibility
    后缀数组-基础
  • 原文地址:https://www.cnblogs.com/yangkai-cn/p/4017240.html
Copyright © 2011-2022 走看看