Java并發編程的藝術》 —3.5.4 concurrent包的實現

      網友投稿 698 2025-03-31

      3.5.4 concurrent包的實現


      由于Java的CAS同時具有volatile讀和volatile寫的內存語義,因此Java線程之間的通信現在有了下面4種方式。

      1)A線程寫volatile變量,隨后B線程讀這個volatile變量。

      2)A線程寫volatile變量,隨后B線程用CAS更新這個volatile變量。

      3)A線程用CAS更新一個volatile變量,隨后B線程用CAS更新這個volatile變量。

      4)A線程用CAS更新一個volatile變量,隨后B線程讀這個volatile變量。

      Java的CAS會使用現代處理器上提供的高效機器級別的原子指令,這些原子指令以原子方式對內存執行讀-改-寫操作,這是在多處理器中實現同步的關鍵(從本質上來說,能夠支持原子性讀-改-寫指令的計算機,是順序計算圖靈機的異步等價機器,因此任何現代的多處理器都會去支持某種能對內存執行原子性讀-改-寫操作的原子指令)。同時,volatile變量的讀/寫和CAS可以實現線程之間的通信。把這些特性整合在一起,就形成了整個concurrent包得以實現的基石。如果我們仔細分析concurrent包的源代碼實現,會發現一個通用化的實現模式。

      首先,聲明共享變量為volatile。

      然后,使用CAS的原子條件更新來實現線程之間的同步。

      《Java并發編程的藝術》 —3.5.4 concurrent包的實現

      同時,配合以volatile的讀/寫和CAS所具有的volatile讀和寫的內存語義來實現線程之間的通信。

      AQS,非阻塞數據結構和原子變量類(java.util.concurrent.atomic包中的類),這些concurrent包中的基礎類都是使用這種模式來實現的,而concurrent包中的高層類又是依賴于這些基礎類來實現的。從整體來看,concurrent包的實現示意圖如3-28所示。

      圖3-28 concurrent包的實現示意圖

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何查看Office2013版本(大客戶版和零售版)(怎么知道office的版本)
      下一篇:淘寶網數據分析軟件(淘寶統計數據分析軟件
      相關文章
      亚洲欧洲视频在线观看| 亚洲xxxxxx| 亚洲福利精品电影在线观看| 亚洲国产精品成人午夜在线观看 | 亚洲乱码无码永久不卡在线| 亚洲中文字幕无码专区| 亚洲日本va午夜中文字幕久久| 亚洲精品无码99在线观看 | 亚洲一区二区三区国产精品| 亚洲精品无码av天堂| 国产成人99久久亚洲综合精品| 精品国产亚洲一区二区在线观看 | 亚洲免费中文字幕| 中中文字幕亚洲无线码| 亚洲jjzzjjzz在线观看| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 亚洲午夜久久久精品影院| 4480yy私人影院亚洲| 亚洲的天堂av无码| 国产日本亚洲一区二区三区| 亚洲粉嫩美白在线| 亚洲国产精品精华液| 亚洲国产精品一区二区九九 | 亚洲愉拍99热成人精品热久久| 亚洲日韩小电影在线观看| 亚洲成AV人在线观看天堂无码| 亚洲av综合avav中文| 激情内射亚洲一区二区三区| 亚洲国产精品综合福利专区| 久久亚洲精品国产亚洲老地址| 亚洲AV永久无码精品网站在线观看 | 亚洲黄片手机免费观看| 亚洲愉拍99热成人精品热久久| 久久久久亚洲精品影视| 亚洲精品中文字幕乱码| 亚洲中文字幕无码久久| 国产成人亚洲综合在线| 亚洲综合另类小说色区| 亚洲成A人片在线观看WWW| 亚洲国产日产无码精品| 亚洲AV成人无码久久WWW|