亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Java并發(fā)編程之原子類

 更新時(shí)間:2023年04月27日 15:04:44   作者:bright丶  
這篇文章主要為大家介紹了Java并發(fā)編程之原子類介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

原子數(shù)組

原子數(shù)組有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,主要是用來(lái)對(duì)數(shù)組中的某個(gè)元素進(jìn)行原子操作。三個(gè)類的方法基本類似,這里只介紹一下AtomicIntegerArray的方法。

AtomicIntegerArray

兩個(gè)構(gòu)造方法,第一個(gè)構(gòu)造方法傳入數(shù)組長(zhǎng)度初始化一個(gè)所有值都為0的數(shù)組,第二個(gè)構(gòu)造方法直接傳入一個(gè)數(shù)組來(lái)進(jìn)行初始化。

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

先獲取數(shù)組中索引為i的值,然后對(duì)它進(jìn)行加1

public final int getAndIncrement(int i)

先獲取數(shù)組中索引為i的值,然后對(duì)它進(jìn)行減1

public final int getAndDecrement(int i)

先對(duì)數(shù)組中索引為i的值進(jìn)行加1,然后獲取新值

public final int incrementAndGet(int i)

先對(duì)數(shù)組中索引為i的值進(jìn)行減1,然后獲取新值

public final int decrementAndGet(int i)

先對(duì)數(shù)組中索引為i的值進(jìn)行加delta,然后獲取新值

public final int addAndGet(int i, int delta)

先獲取數(shù)組中索引為i的值,然后對(duì)它進(jìn)行加delta

public final int getAndAdd(int i, int delta)

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

public final int getAndSet(int i, int newValue)

先獲取數(shù)組中索引為i的值,然后執(zhí)行指定的操作對(duì)其進(jìn)行更新

public final int getAndUpdate(int i, IntUnaryOperator updateFunction)

先執(zhí)行指定的操作對(duì)其進(jìn)行更新,然后獲取新值

public final int updateAndGet(int i, IntUnaryOperator updateFunction)

原子更新器

原子更新器有AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater,它們的作用是對(duì)某個(gè)對(duì)象的某個(gè)屬性進(jìn)行原子操作,同樣三個(gè)類的操作基本相同,只是屬性的類型不同而已,這里以AtomicIntegerFieldUpdater為例介紹基本方法。

AtomicIntegerFieldUpdater

類中提供了一個(gè)靜態(tài)方法來(lái)創(chuàng)建對(duì)象,兩個(gè)參數(shù)分別是tclass:要操作的類,fieldName:要操作的類的屬性名

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

先獲取對(duì)象obj的屬性fieldName的值,然后對(duì)其進(jìn)行自增1操作

public int getAndIncrement(T obj)

先獲取對(duì)象obj的屬性fieldName的值,然后對(duì)其進(jìn)行自減1操作

public int getAndDecrement(T obj)

先把對(duì)象obj的屬性fieldName的值進(jìn)行自增1,然后獲取新值

public int incrementAndGet(T obj)

先把對(duì)象obj的屬性fieldName的值進(jìn)行自減1,然后獲取新值

public int decrementAndGet(T obj)

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

public int getAndAdd(T obj, int delta)

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

public int addAndGet(T obj, int delta)

先獲取對(duì)象obj的屬性fieldName的值,然后把它的值設(shè)為newValue

public int getAndSet(T obj, int newValue)

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

public final int getAndUpdate(T obj, IntUnaryOperator updateFunction)

原子累加器

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

LongAdder

無(wú)參構(gòu)造方法什么也沒有做,默認(rèn)累加器的結(jié)果就是0

public LongAdder()

sum方法就是對(duì)Cell數(shù)組中各單元的值進(jìn)行求和,然后返回當(dāng)前累加器的值

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并發(fā)編程之原子類的詳細(xì)內(nèi)容,更多關(guān)于Java并發(fā)原子類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java CAS基本實(shí)現(xiàn)原理代碼實(shí)例解析

    Java CAS基本實(shí)現(xiàn)原理代碼實(shí)例解析

    這篇文章主要介紹了Java CAS基本實(shí)現(xiàn)原理代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 如何在SpringBoot 中使用 Druid 數(shù)據(jù)庫(kù)連接池

    如何在SpringBoot 中使用 Druid 數(shù)據(jù)庫(kù)連接池

    這篇文章主要介紹了SpringBoot 中使用 Druid 數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-03-03
  • spring AOP的After增強(qiáng)實(shí)現(xiàn)方法實(shí)例分析

    spring AOP的After增強(qiáng)實(shí)現(xiàn)方法實(shí)例分析

    這篇文章主要介紹了spring AOP的After增強(qiáng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring面向切面AOP的After增強(qiáng)實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 使用SkyWalking監(jiān)控Java服務(wù)的過(guò)程

    使用SkyWalking監(jiān)控Java服務(wù)的過(guò)程

    這篇文章主要介紹了使用SkyWalking監(jiān)控Java服務(wù),介紹一個(gè)對(duì)源碼0入侵的Java服務(wù)監(jiān)控方式,SkyWalking Agent,只需要啟動(dòng)Java程序的時(shí)候加幾個(gè)參數(shù),就能對(duì)Java服務(wù)進(jìn)行可視化監(jiān)控,需要的朋友可以參考下
    2023-08-08
  • 創(chuàng)建java多線程程序

    創(chuàng)建java多線程程序

    Java 給多線程編程提供了內(nèi)置的支持。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。希望本篇文章能夠給你帶來(lái)幫助
    2021-06-06
  • Java虛擬機(jī)工作原理

    Java虛擬機(jī)工作原理

    本文主要介紹了Java虛擬機(jī)的工作原理。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 詳解Spring?延遲初始化遇到的問(wèn)題

    詳解Spring?延遲初始化遇到的問(wèn)題

    這篇文章主要介紹了我們?cè)谑褂肧pring延遲初始化容易遇到的問(wèn)題,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的可以借鑒一下
    2023-05-05
  • 全局記錄Feign的請(qǐng)求和響應(yīng)日志方式

    全局記錄Feign的請(qǐng)求和響應(yīng)日志方式

    這篇文章主要介紹了全局記錄Feign的請(qǐng)求和響應(yīng)日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題

    解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題

    我們?cè)谑褂胕dea的時(shí)候經(jīng)常會(huì)遇到一些問(wèn)題,本文介紹了如何解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題,文中有相關(guān)的圖文示例,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring中的Sentinel熔斷降級(jí)詳解

    Spring中的Sentinel熔斷降級(jí)詳解

    這篇文章主要介紹了Spring中的Sentinel熔斷降級(jí)詳解,熔斷降級(jí)是一種保護(hù)系統(tǒng)穩(wěn)定性和可用性的機(jī)制,旨在防止故障的擴(kuò)散和蔓延,提高用戶體驗(yàn)和信任度,需要的朋友可以參考下
    2023-09-09

最新評(píng)論