zoukankan      html  css  js  c++  java
  • 并发编程-concurrent指南-原子操作类-AtomicInteger

    在java并发编程中,会出现++,--等操作,但是这些不是原子性操作,这在线程安全上面就会出现相应的问题。因此java提供了相应类的原子性操作类。

    1.AtomicInteger

      

      可以用原子方式更新的 int 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicInteger 可用在应用程序中(如以原子方式增加的计数器),并且不能用于替换 Integer。但是,此类确实扩展了 Number,允许那些处理基于数字类的工具和实用工具进行统一访问。

    构造方法:

      1.AtomicInteger

      public AtomicInteger(int initialValue)
    创建具有给定初始值的新 AtomicInteger
    参数:
    initialValue - 初始值

           2.AtomicInteger

      public AtomicInteger()

       创建具有初始值 0 的新 AtomicInteger。

    方法详解:

    get

    public final int get()
    获取当前值。
    返回:
    当前值

    set

    public final void set(int newValue)
    设置为给定值。
    参数:
    newValue - 新值

    lazySet

    public final void lazySet(int newValue)
    最后设置为给定值。
    参数:
    newValue - 新值
    从以下版本开始:
    1.6

    getAndSet

    public final int getAndSet(int newValue)
    以原子方式设置为给定值,并返回旧值。
    参数:
    newValue - 新值
    返回:
    以前的值

    compareAndSet

    public final boolean compareAndSet(int expect,
                                       int update)
    如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。
    参数:
    expect - 预期值
    update - 新值
    返回:
    如果成功,则返回 true。返回 False 指示实际值与预期值不相等。

    weakCompareAndSet

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

    可能意外失败并且不提供排序保证,所以只有在很少的情况下才对 compareAndSet 进行适当地选择。

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

    getAndIncrement

    public final int getAndIncrement()
    以原子方式将当前值加 1。
    返回:
    以前的值

    getAndDecrement

    public final int getAndDecrement()
    以原子方式将当前值减 1。
    返回:
    以前的值

    getAndAdd

    public final int getAndAdd(int delta)
    以原子方式将给定值与当前值相加。
    参数:
    delta - 要加上的值
    返回:
    以前的值

    incrementAndGet

    public final int incrementAndGet()
    以原子方式将当前值加 1。
    返回:
    更新的值

    decrementAndGet

    public final int decrementAndGet()
    以原子方式将当前值减 1。
    返回:
    更新的值

    addAndGet

    public final int addAndGet(int delta)
    以原子方式将给定值与当前值相加。
    参数:
    delta - 要加上的值
    返回:
    更新的值

    toString

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

    intValue

    public int intValue()
    从类 Number 复制的描述
    int 形式返回指定的数值。这可能会涉及到舍入或取整。
    指定者:
    Number 中的 intValue
    返回:
    转换为 int 类型后该对象表示的数值。

    longValue

    public long longValue()
    从类 Number 复制的描述
    long 形式返回指定的数值。这可能涉及到舍入或取整。
    指定者:
    Number 中的 longValue
    返回:
    转换为 long 类型后该对象表示的数值。

    floatValue

    public float floatValue()
    从类 Number 复制的描述
    float 形式返回指定的数值。这可能会涉及到舍入。
    指定者:
    Number 中的 floatValue
    返回:
    转换为 float 类型后该对象表示的数值。

    doubleValue

    public double doubleValue()
    从类 Number 复制的描述
    double 形式返回指定的数值。这可能会涉及到舍入。
    指定者:
    Number 中的 doubleValue
    返回:
    转换为 double 类型后该对象表示的数值。

    转自:http://www.cnblogs.com/tonylovett/p/5254509.html

  • 相关阅读:
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & ManacherK
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher I
    pat 1065 A+B and C (64bit)(20 分)(大数, Java)
    pat 1069 The Black Hole of Numbers(20 分)
    pat 1077 Kuchiguse(20 分) (字典树)
    pat 1084 Broken Keyboard(20 分)
    pat 1092 To Buy or Not to Buy(20 分)
    pat 1046 Shortest Distance(20 分) (线段树)
    pat 1042 Shuffling Machine(20 分)
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10183687.html
Copyright © 2011-2022 走看看