中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java并發編程之原子類怎么應用

發布時間:2023-04-27 16:37:48 來源:億速云 閱讀:104 作者:iii 欄目:開發技術

這篇文章主要介紹“Java并發編程之原子類怎么應用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java并發編程之原子類怎么應用”文章能幫助大家解決問題。

原子數組

原子數組有AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray,主要是用來對數組中的某個元素進行原子操作。三個類的方法基本類似,這里只介紹一下AtomicIntegerArray的方法。

AtomicIntegerArray

兩個構造方法,第一個構造方法傳入數組長度初始化一個所有值都為0的數組,第二個構造方法直接傳入一個數組來進行初始化。

public AtomicIntegerArray(int length)
public AtomicIntegerArray(int[] array)

先獲取數組中索引為i的值,然后對它進行加1

public final int getAndIncrement(int i)

先獲取數組中索引為i的值,然后對它進行減1

public final int getAndDecrement(int i)

先對數組中索引為i的值進行加1,然后獲取新值

public final int incrementAndGet(int i)

先對數組中索引為i的值進行減1,然后獲取新值

public final int decrementAndGet(int i)

先對數組中索引為i的值進行加delta,然后獲取新值

public final int addAndGet(int i, int delta)

先獲取數組中索引為i的值,然后對它進行加delta

public final int getAndAdd(int i, int delta)

先獲取數組中索引為i的值,然后把它設置為newValue

public final int getAndSet(int i, int newValue)

先獲取數組中索引為i的值,然后執行指定的操作對其進行更新

public final int getAndUpdate(int i, IntUnaryOperator updateFunction)

先執行指定的操作對其進行更新,然后獲取新值

public final int updateAndGet(int i, IntUnaryOperator updateFunction)

原子更新器

原子更新器有AtomicIntegerFieldUpdaterAtomicLongFieldUpdaterAtomicReferenceFieldUpdater,它們的作用是對某個對象的某個屬性進行原子操作,同樣三個類的操作基本相同,只是屬性的類型不同而已,這里以AtomicIntegerFieldUpdater為例介紹基本方法。

AtomicIntegerFieldUpdater

類中提供了一個靜態方法來創建對象,兩個參數分別是tclass:要操作的類,fieldName:要操作的類的屬性名

public static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass,
                                                          String fieldName)

先獲取對象obj的屬性fieldName的值,然后對其進行自增1操作

public int getAndIncrement(T obj)

先獲取對象obj的屬性fieldName的值,然后對其進行自減1操作

public int getAndDecrement(T obj)

先把對象obj的屬性fieldName的值進行自增1,然后獲取新值

public int incrementAndGet(T obj)

先把對象obj的屬性fieldName的值進行自減1,然后獲取新值

public int decrementAndGet(T obj)

先獲取對象obj的屬性fieldName的值,然后對其加delta

public int getAndAdd(T obj, int delta)

先把對象obj的屬性fieldName的值加delta,然后獲取新值

public int addAndGet(T obj, int delta)

先獲取對象obj的屬性fieldName的值,然后把它的值設為newValue

public int getAndSet(T obj, int newValue)

先獲取對象obj的屬性fieldName的值,然后執行指定的操作把更新它的值

public final int getAndUpdate(T obj, IntUnaryOperator updateFunction)

原子累加器

原子累加器LongAdderjdk1.8新增的一個類,它的作用和AtomicIntegerAtomicLong類似,但是在多線程情況下它的性能要高很多,原因是LongAdder維護了一個Cell數組,累加操作時每個線程對其中一個數據進行操作,最后再把結果進行匯總,提高了并發性。

LongAdder

無參構造方法什么也沒有做,默認累加器的結果就是0

public LongAdder()

sum方法就是對Cell數組中各單元的值進行求和,然后返回當前累加器的值

public long sum()

累加器自增1

public void increment()

累加器自減1

public void decrement()

累加器加x

public void add(long x)

累加器的值重置為0

public void reset()

先獲取累加器的值,然后再重置為0

public long sumThenReset()

關于“Java并發編程之原子類怎么應用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江阴市| 绥芬河市| 宜章县| 南靖县| 怀集县| 通化县| 大庆市| 荣昌县| 渭源县| 张掖市| 通化县| 禄丰县| 庐江县| 北票市| 资溪县| 历史| 如皋市| 江孜县| 遵义县| 梅州市| 茌平县| 正镶白旗| 石河子市| 溧阳市| 九江市| 巴林右旗| 房产| 嫩江县| 永善县| 罗田县| 北海市| 贡嘎县| 海伦市| 台东市| 黄骅市| 友谊县| 凭祥市| 密云县| 扶风县| 奉新县| 梨树县|