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

java關(guān)于并發(fā)模型中的兩種鎖知識(shí)點(diǎn)詳解

 更新時(shí)間:2021年04月02日 08:29:43   作者:小妮淺淺  
在本篇文章了小編給大家整理的是一篇關(guān)于java關(guān)于并發(fā)模型中的兩種鎖知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。

1、悲觀鎖

悲觀鎖假設(shè)最壞的情況(如果果你不鎖門,那么搗蛋鬼就會(huì)闖入并搞得一團(tuán)糟),只有在確保其他線程不受干擾(獲得正確的鎖)的情況下才能執(zhí)行。

一般實(shí)現(xiàn)如獨(dú)占鎖等。

安全性更高,但中低并發(fā)性效率更低。

2、樂觀鎖

樂觀鎖通過沖突檢查機(jī)制判斷更新過程中是否存在其他線程干擾。如果存在,操作將失敗,重試(也可以不重試)。

CAS等常見實(shí)現(xiàn)。

一些樂觀鎖削弱了一致性,但在中低并發(fā)性下效率大大提高。

知識(shí)點(diǎn)擴(kuò)展:

并行與分布式編程

關(guān)注的是復(fù)雜軟件系統(tǒng)的構(gòu)造,“復(fù)雜”是指多線程、分布式與GUI程序

在鎖與同步這一節(jié)中,詳細(xì)介紹了如何設(shè)計(jì)線程安全的ADT

并發(fā)

在我們的并發(fā)介紹中,我們看到了兩種并發(fā)編程模型:共享內(nèi)存和消息傳遞。

• 在共享內(nèi)存模型中 :并發(fā)模塊通過在內(nèi)存中讀取和寫入共享可變對(duì)象來進(jìn)行交互。在單個(gè)Java進(jìn)程中創(chuàng)建多個(gè)線程是我們共享內(nèi)存并發(fā)的主要示例。

• 在消息傳遞模型中:并發(fā)模塊通過通信通道相互發(fā)送不可變消息進(jìn)行交互。該通信通道可以通過網(wǎng)絡(luò)連接不同的計(jì)算機(jī),如我們的一些初始示例:Web瀏覽,即時(shí)消息等。


對(duì)于鎖,這是Java語言提供的內(nèi)嵌機(jī)制,每個(gè)Object都有相關(guān)聯(lián)的lock;

首先來了解一下java鎖的相關(guān)概念

Java的內(nèi)置鎖:每個(gè)java對(duì)象都可以用做一個(gè)實(shí)現(xiàn)同步的鎖,這些鎖成為內(nèi)置鎖。線程進(jìn)入同步代碼塊或者代碼方法的時(shí)候會(huì)自動(dòng)獲得該鎖,在退出同步代碼塊或者方法的時(shí)候則會(huì)釋放該鎖。獲得內(nèi)置鎖的唯一途徑就是進(jìn)入這個(gè)鎖的保護(hù)的同步代碼塊或者方法。

Java內(nèi)置鎖是一個(gè)互斥鎖:就是最多一個(gè)程序能夠得到這個(gè)鎖。當(dāng)多個(gè)線程想要對(duì)某個(gè)mutable類型的ADT操作時(shí),就是修改它的值時(shí),鎖能夠劫持這些線程的操作,阻塞他們,只有之前的線程結(jié)束調(diào)用時(shí),釋放這個(gè)鎖,后面的線程才能獲得該鎖,否則一直等待下去。

用法

同步和鎖:阻止了多線程在同一時(shí)間內(nèi)對(duì)可變數(shù)據(jù)的共享操作,即程序員來負(fù)責(zé)多線程之間對(duì)mutable數(shù)據(jù)的共享操作,通過”同步”策略,避免多線程同時(shí)訪問數(shù)據(jù),使用鎖機(jī)制,獲取對(duì)數(shù)據(jù)的獨(dú)家mutation權(quán),其他線程被阻塞,不得訪問,即不可修改。

Java同步鎖實(shí)現(xiàn)方法

synchronized 關(guān)鍵詞修飾

wait、notify、notifyAll的使用

相關(guān)文章

  • Java阻塞隊(duì)列BlockingQueue詳解

    Java阻塞隊(duì)列BlockingQueue詳解

    這篇文章主要介紹了Java阻塞隊(duì)列BlockingQueue,文章通過隊(duì)列的類型展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Spring?Boot?集成并開發(fā)?Sa-token示例詳解

    Spring?Boot?集成并開發(fā)?Sa-token示例詳解

    Sa-token是一款高可用的權(quán)限認(rèn)證框架,他帶我們用最簡化的配置完成用?spring?security?需要進(jìn)行大量配置的才能完成的工作,這篇文章主要介紹了Spring?Boot?集成并開發(fā)?Sa-token,需要的朋友可以參考下
    2023-06-06
  • Javamelody監(jiān)控不到sql的問題(親測(cè)有效)??

    Javamelody監(jiān)控不到sql的問題(親測(cè)有效)??

    JavaMelody是用來在QA和實(shí)際運(yùn)行生產(chǎn)環(huán)境中監(jiān)控Java或Java?EE應(yīng)用程序服務(wù)器的一個(gè)開源框架,這篇文章主要介紹了Javamelody監(jiān)控不到sql(親測(cè)有效)??,需要的朋友可以參考下
    2022-10-10
  • SpringBoot+RabbitMQ方式收發(fā)消息的實(shí)現(xiàn)示例

    SpringBoot+RabbitMQ方式收發(fā)消息的實(shí)現(xiàn)示例

    這篇文章主要介紹了SpringBoot+RabbitMQ方式收發(fā)消息的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決

    Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決

    這篇文章主要介紹了Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot將logback替換成log4j2的操作步驟

    SpringBoot將logback替換成log4j2的操作步驟

    文章介紹了如何在SpringBoot項(xiàng)目中將默認(rèn)的日志框架logback替換為log4j2,以利用log4j2的高性能異步日志記錄特性,特別是通過Disruptor實(shí)現(xiàn)的無鎖化隊(duì)列,提高了日志處理速度,同時(shí),文章提供了詳細(xì)的配置步驟,需要的朋友可以參考下
    2024-10-10
  • java中File類的構(gòu)造函數(shù)及其方法

    java中File類的構(gòu)造函數(shù)及其方法

    這篇文章主要介紹了java中File類的構(gòu)造函數(shù)及其方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Spring項(xiàng)目里將SQL語句寫在.sql文件中的方法

    Spring項(xiàng)目里將SQL語句寫在.sql文件中的方法

    這篇文章主要介紹了Spring項(xiàng)目里如何將SQL語句寫在.sql文件中的方法,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,有需要的朋友們下面來一起看看吧。
    2017-01-01
  • ElasticSearch?深度分頁示例解析

    ElasticSearch?深度分頁示例解析

    這篇文章主要為大家介紹了ElasticSearch?深度分頁示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Spring中@Primary注解的作用詳解

    Spring中@Primary注解的作用詳解

    這篇文章主要介紹了Spring中@Primary注解的作用詳解,@Primary 注解是Spring框架中的一個(gè)注解,用于標(biāo)識(shí)一個(gè)Bean作為默認(rèn)的實(shí)現(xiàn)類,當(dāng)存在多個(gè)實(shí)現(xiàn)類時(shí),通過使用@Primary注解,可以指定其中一個(gè)作為默認(rèn)的實(shí)現(xiàn)類,以便在注入時(shí)自動(dòng)選擇該實(shí)現(xiàn)類,需要的朋友可以參考下
    2023-10-10

最新評(píng)論