東坡下載:內(nèi)容最豐富最安全的下載站!

幫助|文件類型庫|最新更新|下載分類|排行榜

編程相關(guān)破解相關(guān)編程工具反編譯安裝制作程序源碼軟件補(bǔ)丁數(shù)據(jù)庫Visual Studiovc++visualbasicdreamweaver

首頁編程開發(fā)編程相關(guān) → JDK8中新增原子性操作類LongAdder pdf 完整版

JDK8中新增原子性操作類LongAdder

JDK8中新增原子性操作類LongAdderpdf 完整版

  • 大。234KB
  • 語言:中文
  • 平臺(tái):WinAll
  • 更新:2017-09-22 19:19
  • 等級:
  • 類型:編程相關(guān)
  • 網(wǎng)站:暫無
  • 授權(quán):免費(fèi)軟件
  • 廠商:
  • 產(chǎn)地:國產(chǎn)軟件
好用好玩 50%(0)
坑爹 坑爹 50%(0)
軟件介紹軟件截圖相關(guān)軟件軟件教程網(wǎng)友評論下載地址

相關(guān)推薦: LongAdder 編程

    JDK8中新增原子性操作類LongAdder,LongAdder類是LongAccumulator的一個(gè)特例,LongAccumulator提供了比LongAdder更強(qiáng)大的功能,只需要構(gòu)造LongAccumulator時(shí)候傳入自定義雙面運(yùn)算器就OK,后者則內(nèi)置累加的規(guī)則。

    前言

    本文主要給大家介紹了關(guān)于JDK8新增的原子性操作類LongAdder的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

    LongAdder簡單介紹

    LongAdder類似于AtomicLong是原子性遞增或者遞減類,AtomicLong已經(jīng)通過CAS提供了非阻塞的原子性操作,相比使用阻塞算法的同步器來說性能已經(jīng)很好了,但是JDK開發(fā)組并不滿足,因?yàn)樵诜浅8叩牟l(fā)請求下AtomicLong的性能不能讓他們接受,雖然AtomicLong使用CAS但是CAS失敗后還是通過無限循環(huán)的自旋鎖不斷嘗試的

    在高并發(fā)下N多線程同時(shí)去操作一個(gè)變量會(huì)造成大量線程CAS失敗然后處于自旋狀態(tài),這大大浪費(fèi)了cpu資源,降低了并發(fā)性。那么既然AtomicLong性能由于過多線程同時(shí)去競爭一個(gè)變量的更新而降低的,那么如果把一個(gè)變量分解為多個(gè)變量,讓同樣多的線程去競爭多個(gè)資源那么性能問題不就解決了?是的,JDK8提供的LongAdder就是這個(gè)思路。下面通過圖形來標(biāo)示兩者不同。

    如圖AtomicLong是多個(gè)線程同時(shí)競爭同一個(gè)變量。

    如圖LongAdder則是內(nèi)部維護(hù)多個(gè)變量,每個(gè)變量初始化都0,在同等并發(fā)量的情況下,爭奪單個(gè)變量的線程量會(huì)減少這是變相的減少了爭奪共享資源的并發(fā)量,另外多個(gè)線程在爭奪同一個(gè)原子變量時(shí)候如果失敗并不是自旋CAS重試,而是嘗試獲取其他原子變量的鎖,最后獲取當(dāng)前值時(shí)候是把所有變量的值累加后返回的。

    LongAdder維護(hù)了一個(gè)延遲初始化的原子性更新數(shù)組和一個(gè)基值變量base.數(shù)組的大小保持是2的N次方大小,數(shù)組表的下標(biāo)使用每個(gè)線程的hashcode值的掩碼表示,數(shù)組里面的變量實(shí)體是Cell類型,Cell類型是AtomicLong的一個(gè)改進(jìn),用來減少緩存的爭用,對于大多數(shù)原子操作字節(jié)填充是浪費(fèi)的,因?yàn)樵有圆僮鞫际菬o規(guī)律的分散在內(nèi)存中進(jìn)行的,多個(gè)原子性操作彼此之間是沒有接觸的,但是原子性數(shù)組元素彼此相鄰存放將能經(jīng)常共享緩存行,所以這在性能上是一個(gè)提升。

    另外由于Cells占用內(nèi)存是相對比較大的,所以一開始并不創(chuàng)建,而是在需要時(shí)候在創(chuàng)建,也就是惰性加載,當(dāng)一開始沒有空間時(shí)候,所有的更新都是操作base變量,

    自旋鎖cellsBusy用來初始化和擴(kuò)容數(shù)組表使用,這里沒有必要用阻塞鎖,當(dāng)一次線程發(fā)現(xiàn)當(dāng)前下標(biāo)的元素獲取鎖失敗后,會(huì)嘗試獲取其他下表的元素的鎖。更詳細(xì)的說明敬請期待 Java并發(fā)編程基礎(chǔ)之并發(fā)包源碼剖析 一書的出版

    PC官方
    安卓官方手機(jī)版
    IOS官方手機(jī)版

    JDK8中新增原子性操作類LongAdder截圖

    下載地址

    JDK8中新增原子性操作類LongAdder pdf 完整版

    熱門評論
    最新評論
    發(fā)表評論 查看所有評論(0)
    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)

    編輯推薦

    本類軟件必備

    編程UltraEditvc++6.0Notepad++編譯VBILSpyHopper數(shù)據(jù)MySQLoracleaccess設(shè)計(jì)DreamweaverfireworksFlash

    報(bào)錯(cuò)

    請簡要描述您遇到的錯(cuò)誤,我們將盡快予以修正。

    轉(zhuǎn)帖到論壇
    輪壇轉(zhuǎn)帖HTML方式

    輪壇轉(zhuǎn)帖UBB方式