最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

原子數(shù)組

原子數(shù)組有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,主要是用來對(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ù)組來進(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)方法來創(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è)類,它的作用和AtomicInteger、AtomicLong類似,但是在多線程情況下它的性能要高很多,原因是LongAdder維護(hù)了一個(gè)Cell數(shù)組,累加操作時(shí)每個(gè)線程對(duì)其中一個(gè)數(shù)據(jù)進(jìn)行操作,最后再把結(jié)果進(jìn)行匯總,提高了并發(fā)性。

LongAdder

無參構(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并發(fā)編程專題(三)----詳解線程的同步

    java并發(fā)編程專題(三)----詳解線程的同步

    這篇文章主要介紹了JAVA并發(fā)編程 線程同步的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決

    JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決

    這篇文章主要介紹了JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Mybatis配置解析看這一篇就夠了

    Mybatis配置解析看這一篇就夠了

    這篇文章主要介紹了詳解Mybatis是如何解析配置文件的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • RabbitMQ中的Connection和Channel信道詳解

    RabbitMQ中的Connection和Channel信道詳解

    這篇文章主要介紹了RabbitMQ中的Connection和Channel信道詳解,信道是建立在 Connection 之上的虛擬連接,RabbitMQ 處理的每條 AMQP 指令都是通過信道完成的,需要的朋友可以參考下
    2023-08-08
  • 淺析SpringBoot中的過濾器和攔截器

    淺析SpringBoot中的過濾器和攔截器

    過濾器和攔截器都是為了在請(qǐng)求到達(dá)目標(biāo)處理器(Servlet或Controller)之前或者之后插入自定義的處理邏輯,下面就跟隨小編來看看它們二者的區(qū)別和具體使用吧
    2024-03-03
  • JavaMail實(shí)現(xiàn)發(fā)送超文本(html)格式郵件的方法

    JavaMail實(shí)現(xiàn)發(fā)送超文本(html)格式郵件的方法

    這篇文章主要介紹了JavaMail實(shí)現(xiàn)發(fā)送超文本(html)格式郵件的方法,實(shí)例分析了java發(fā)送超文本文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Java解壓zip文件的關(guān)鍵代碼

    Java解壓zip文件的關(guān)鍵代碼

    本文給大家分享一段java解壓zip文件的關(guān)鍵代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • 保證緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性詳解

    保證緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性詳解

    在實(shí)際開發(fā)過程中,緩存的使用頻率是非常高的,只要使用緩存和數(shù)據(jù)庫(kù)存儲(chǔ),就難免會(huì)出現(xiàn)雙寫時(shí)數(shù)據(jù)一致性的問題,本文主要介紹了如何保證緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性,需要的小伙伴可以參考閱讀
    2023-04-04
  • Java程序快速合并多個(gè)Word(docx)文檔

    Java程序快速合并多個(gè)Word(docx)文檔

    這篇文章主要為大家介紹了如何使用Java程序快速合并多個(gè)Word(docx)文檔實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Java中for循環(huán)遍歷刪除操作方法

    Java中for循環(huán)遍歷刪除操作方法

    在Java中,有些場(chǎng)景需要遍歷集合中的元素,然后根據(jù)條件進(jìn)行刪除元素的操作,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評(píng)論

辉南县| 浦东新区| 靖边县| 南投市| 安福县| 黄龙县| 依兰县| 孝昌县| 长宁县| 朔州市| 昌平区| 德清县| 永嘉县| 五寨县| 霸州市| 乌什县| 大兴区| 黔南| 大荔县| 和龙市| 盖州市| 霸州市| 科尔| 区。| 伊吾县| 长顺县| 临朐县| 绥芬河市| 即墨市| 建平县| 陕西省| 岳池县| 永嘉县| 马尔康县| 威信县| 天门市| 连云港市| 嘉定区| 仁布县| 南安市| 德格县|