欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、悲觀鎖和樂(lè)觀鎖

1.1. 樂(lè)觀鎖

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

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

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

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ì)有問(wèn)題。

四、自旋鎖

在這里插入圖片描述

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

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

在這里插入圖片描述

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

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

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

相關(guān)文章

  • 解決SpringSecurity 一直登錄失敗的問(wèn)題

    解決SpringSecurity 一直登錄失敗的問(wèn)題

    這篇文章主要介紹了解決SpringSecurity 一直登錄失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MyBatisPlus超詳細(xì)分析條件查詢(xún)

    MyBatisPlus超詳細(xì)分析條件查詢(xún)

    這篇文章主要介紹了MyBatisPlus條件查詢(xún)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況

    SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況

    這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中Lambda表達(dá)式和函數(shù)式接口的使用和特性

    Java中Lambda表達(dá)式和函數(shù)式接口的使用和特性

    Java Lambda表達(dá)式是一種函數(shù)式編程的特性,可簡(jiǎn)化匿名內(nèi)部類(lèi)的寫(xiě)法,與函數(shù)式接口搭配使用,實(shí)現(xiàn)代碼簡(jiǎn)潔、可讀性高、易于維護(hù)的特點(diǎn),適用于集合操作、多線(xiàn)程編程等場(chǎng)景
    2023-04-04
  • JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測(cè)試

    JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測(cè)試

    這篇文章主要介紹了JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • DoytoQuery中的查詢(xún)映射方案詳解

    DoytoQuery中的查詢(xún)映射方案詳解

    這篇文章主要為大家介紹了DoytoQuery中的查詢(xún)映射方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • MyBatis-Plus攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的示例

    MyBatis-Plus攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的示例

    本文主要介紹了MyBatis-Plus攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 關(guān)于cron表達(dá)式每天整點(diǎn)執(zhí)行一次的問(wèn)題

    關(guān)于cron表達(dá)式每天整點(diǎn)執(zhí)行一次的問(wèn)題

    這篇文章主要介紹了關(guān)于cron表達(dá)式每天整點(diǎn)執(zhí)行一次的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java中如何取出String字符串括號(hào)中的內(nèi)容

    Java中如何取出String字符串括號(hào)中的內(nèi)容

    這篇文章主要介紹了Java中如何取出String字符串括號(hào)中的內(nèi)容問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Spring中配置Transaction與不配置的區(qū)別及說(shuō)明

    Spring中配置Transaction與不配置的區(qū)別及說(shuō)明

    這篇文章主要介紹了Spring中配置Transaction與不配置的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論