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

Java多線程之多種鎖和阻塞隊(duì)列

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

一、悲觀鎖和樂觀鎖

1.1. 樂觀鎖

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

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

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

1.2. 悲觀鎖

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

二、公平鎖和非公平鎖

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

三、可重入鎖(遞歸鎖)

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

在這里插入圖片描述

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

在這里插入圖片描述

兩個(gè)同步方法01和02,都是被鎖住的,當(dāng)我們運(yùn)行01的時(shí)候,一旦獲取的01的鎖,那么02的鎖也可以被自動(dòng)獲取。

在這里插入圖片描述

補(bǔ)充:lock和unlock只要配對(duì)使用,就不會(huì)有問題。

四、自旋鎖

在這里插入圖片描述

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

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

在這里插入圖片描述

讀歸讀,寫歸寫,讀和寫可以同時(shí)進(jìn)行。

六、什么是阻塞隊(duì)列?

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

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

七、阻塞隊(duì)列(BlockingQueue)

在這里插入圖片描述

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

在這里插入圖片描述

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

相關(guān)文章

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

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

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

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

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

    Java編程復(fù)用類代碼詳解

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

    springmvc mybatis集成配置示例

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

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

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

    java生成壓縮文件示例代碼

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

    java項(xiàng)目新建遇到的兩個(gè)問題解決

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

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

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

    Java concurrency集合之 CopyOnWriteArrayList_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

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

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

最新評(píng)論

神木县| 依兰县| 巫溪县| 义马市| 托克逊县| 定兴县| 沙坪坝区| 彰武县| 珲春市| 潼关县| 南涧| 旌德县| 邻水| 田阳县| 天峻县| 崇礼县| 蒙阴县| 尤溪县| 武义县| 大安市| 明溪县| 视频| 阿拉善左旗| 韶关市| 淅川县| 汝州市| 巴彦县| 昭苏县| 贵南县| 伊宁市| 嘉黎县| 永川市| 永春县| 靖州| 桂林市| 凤阳县| 庆阳市| 仙桃市| 永康市| 青神县| 根河市|