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

Java多線程之多種鎖和阻塞隊列

 更新時間:2021年06月09日 15:56:58   作者:若能綻放光丶  
今天帶大家學習的是Java多線程的相關知識,文章圍繞著java多種鎖和阻塞隊列展開,文中有非常詳細的介紹,需要的朋友可以參考下

一、悲觀鎖和樂觀鎖

1.1. 樂觀鎖

顧名思義,就是很樂觀,每次去拿數(shù)據(jù)的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數(shù)據(jù),可以使用版本號等機制。

樂觀鎖適用于多讀的應用類型,樂觀鎖在Java中是通過使用無鎖編程來實現(xiàn),最常采用的是CAS算法,Java原子類中的遞增操作就通過CAS自旋實現(xiàn)的。

CAS全稱 Compare And Swap(比較與交換),是一種無鎖算法。在不使用鎖(沒有線程被阻塞)的情況下實現(xiàn)多線程之間的變量同步。java.util.concurrent包中的原子類就是通過CAS來實現(xiàn)了樂觀鎖。

1.2. 悲觀鎖

總是假設最壞的情況,每次去拿數(shù)據(jù)的時候都認為別人會修改,所以每次在拿數(shù)據(jù)的時候都會上鎖,這樣別人想拿這個數(shù)據(jù)就會阻塞直到它拿到鎖。

二、公平鎖和非公平鎖

在這里插入圖片描述
在這里插入圖片描述

三、可重入鎖(遞歸鎖)

先看官網(wǎng)的解釋翻譯后的

在這里插入圖片描述

看不太懂,那么我們結合一下下面的案例就行了。

在這里插入圖片描述

兩個同步方法01和02,都是被鎖住的,當我們運行01的時候,一旦獲取的01的鎖,那么02的鎖也可以被自動獲取。

在這里插入圖片描述

補充:lock和unlock只要配對使用,就不會有問題。

四、自旋鎖

在這里插入圖片描述

其實CAS底層就是用 Unsafe類+CAS(自旋) 實現(xiàn)的,CAS底層有一個do while語句,循環(huán)比較在主存中的值是否等于期望值。

五、獨占鎖(寫)/共享鎖(讀)

在這里插入圖片描述

讀歸讀,寫歸寫,讀和寫可以同時進行。

六、什么是阻塞隊列?

隊列中放著數(shù)據(jù),一個線程生產(chǎn),一個線程獲取。

在這里插入圖片描述
在這里插入圖片描述

七、阻塞隊列(BlockingQueue)

在這里插入圖片描述

阻塞隊列有多少實現(xiàn)類呢?

在這里插入圖片描述

到此這篇關于Java多線程之多種鎖和阻塞隊列的文章就介紹到這了,更多相關java多種鎖和阻塞隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot整合websocket實現(xiàn)即時通信聊天

    SpringBoot整合websocket實現(xiàn)即時通信聊天

    這篇文章主要介紹了SpringBoot整合websocket實現(xiàn)即時通信聊天,實時通信是一個實時通信系統(tǒng),允許兩人或多人使用網(wǎng)絡實時的傳遞文字消息、文件、語音與視頻交流,需要的朋友可以參考下
    2022-05-05
  • Mybatis參數(shù)處理的幾種方法小結

    Mybatis參數(shù)處理的幾種方法小結

    在Mybatis中如何處理參數(shù)是一個非常重要的環(huán)節(jié),本文將詳細介紹 Mybatis 的參數(shù)處理機制,包括傳入?yún)?shù)和返回參數(shù)的處理方式,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Java編程復用類代碼詳解

    Java編程復用類代碼詳解

    這篇文章主要介紹了Java編程復用類代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • springmvc mybatis集成配置示例

    springmvc mybatis集成配置示例

    本文主要介紹springmvc+mybatis集成配置,這里提供了實例代碼,和簡單說明,有需要的小伙伴可以參考下
    2016-09-09
  • Spring如何自定義加載配置文件(分層次加載)

    Spring如何自定義加載配置文件(分層次加載)

    這篇文章主要介紹了Spring如何自定義加載配置文件(分層次加載)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java生成壓縮文件示例代碼

    java生成壓縮文件示例代碼

    在工作過程中,需要將一個文件夾生成壓縮文件,然后提供給用戶下載。寫了一個壓縮文件的工具類。該工具類支持單個文件和文件夾壓縮
    2013-11-11
  • java項目新建遇到的兩個問題解決

    java項目新建遇到的兩個問題解決

    創(chuàng)建一個新的Java項目可以通過多種方式進行,包括使用集成開發(fā)環(huán)境(IDE)或手動創(chuàng)建,下面這篇文章主要給大家介紹了關于java項目新建遇到的兩個問題,需要的朋友可以參考下
    2024-06-06
  • Java 基于Spire.Cloud.SDK for Java在PDF中繪制形狀

    Java 基于Spire.Cloud.SDK for Java在PDF中繪制形狀

    這篇文章主要介紹了Java 基于Spire.Cloud.SDK for Java在PDF中繪制形狀,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java concurrency集合之 CopyOnWriteArrayList_動力節(jié)點Java學院整理

    Java concurrency集合之 CopyOnWriteArrayList_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java concurrency集合之 CopyOnWriteArrayList的相關資料,需要的朋友可以參考下
    2017-06-06
  • Java創(chuàng)建線程及配合使用Lambda方式

    Java創(chuàng)建線程及配合使用Lambda方式

    這篇文章主要介紹了Java創(chuàng)建線程及配合使用Lambda方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

永平县| 龙岩市| 新巴尔虎左旗| 莱阳市| 万山特区| 新野县| 武川县| 襄汾县| 明溪县| 康定县| 宜章县| 康保县| 镇坪县| 农安县| 日土县| 云霄县| 泰顺县| 涞源县| 德令哈市| 临沂市| 绥滨县| 明溪县| 宁武县| 临猗县| 高尔夫| 鄂伦春自治旗| 且末县| 弋阳县| 新闻| 申扎县| 临潭县| 迁西县| 木兰县| 襄汾县| 额济纳旗| 金乡县| 石狮市| 孟连| 武平县| 偃师市| 墨竹工卡县|