【公平鎖 和 非公平鎖】


公平鎖 和 非公平鎖

公平鎖:類似食堂打飯,按照申請鎖的順序來獲取鎖類似廁所蹲坑先來后到

公平鎖就是很公平 在并發環境下每個線程在獲取鎖的同時會先查看此鎖維護的等待隊列,如果為空,或者當前線程是等待就占有鎖,否則就加入到等待隊列中,以后會按照FIFO的規則從隊列中取到自己

非公平鎖: 多線程獲取鎖的順序并不是按照申請鎖的順序,有可能后申請的線程比先申請的線程優先獲取到鎖,在高并發的情況下可能造成優先級反轉和饑餓現象

非公平鎖上來就嘗試占有鎖,如果占有失敗,在采取類似公平鎖的方式

并發包ReentrantLock的創建可以指定構造函數的boolean類型來得到公平鎖或者非公平鎖 默認是非公平鎖

優勢

非公平鎖的優點在于吞吐量必公平鎖大 對于synchronized而言 也是一種非公平鎖.

可重入鎖(遞歸鎖)

只在同一個線程外層函數獲取鎖后,內層遞歸函數仍然能夠獲取該所得代碼在同一個線程在外層獲取所得時候,進入內層會自動獲取鎖也就是說 線程可以進入任何一個他已經擁有的鎖所同步者的代碼塊

ReentrantLock 和synchronized 典型的可重入鎖 可避免死鎖

自旋鎖

嘗試獲取鎖但是不會立刻阻塞,而是采用循環的方式來嘗試獲取鎖 優點 減少上下文切換 缺點 循環會消耗CPU

類似于 我要向老師問題 但是老師有事在打電話 那我有兩種方式 一種就是一個在那等 阻塞著,一種就是 下去抽根煙一會再回來 如果打完了就問打不完繼續干自己的事 再回來看 一直循環

手寫自旋鎖

less大致思路: 通過CAS操作完成自旋鎖 -- A線程先進來調用myLock方法自己持有5秒鐘 -- B進來后發現當前線程持有鎖不為空 --只能通過自旋等待 -- 直到A釋放鎖后B隨即搶到

獨占鎖(寫)/共享鎖(讀)/互斥鎖/讀寫鎖

獨占鎖:指該鎖一次只能被一個線程所持有。對ReentrantLock和Synchronized而言都是獨占鎖

共享鎖:指該鎖可被多個線程所持有

對ReentrantReadWriteLock其讀鎖是共享鎖,其寫鎖是獨占鎖

讀鎖的共享可保證并發讀是非常高效的,讀寫,寫讀,寫寫的過程是互斥的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37750.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20人團隊如何免費使用 Atlassian 云產品?

企業賺錢越來越難,尤其是初創團隊或小型團隊更傾向于使用免費工具支持業務。團隊規模影響協作復雜度,Atlassian 考慮到小團隊的需求,提供了多種選擇。比如,Jira 和 Confluence 的云版本有免費版,包含基本的項目管理功能…

ISP IC/FPGA設計-第一部分-SC130GS攝像頭分析(0)

1.介紹 SC130GS是一款國產的Global shutter CMOS圖像傳感器,最高支持1280Hx1024V240fps的傳輸速率;SC130GS有黑白和彩色款,作為ISP開發選擇彩色的,有效像素窗口為1288Hx1032V,支持復雜的片上操作,選擇他理…

Toshiba東芝TB6612FNG電機驅動IC:釋放性能與多功能性

在嵌入式系統和機器人技術領域,電機控制是一個關鍵方面,對項目的性能和可靠性有著顯著影響。東芝的TB6612FNG電機驅動IC作為一個穩健且多功能的解決方案,在驅動雙直流電機方面脫穎而出,提供了高性能、可靠性和易用性。本文將深入探…

23種設計模式之裝飾者模式

深入理解裝飾者模式 一、裝飾者模式簡介1.1 定義1.2 模式類型1.3 主要作用1.4 優點1.5 缺點 二、模式動機三、模式結構四、 裝飾者模式的實現4.1 組件接口4.2 具體組件4.3 裝飾者抽象類4.4 具體裝飾者4.5 使用裝飾者模式4.6 輸出結果: 五、 應用場景5.1 圖形用戶界面…

排序(堆排序、快速排序、歸并排序)-->深度剖析(二)

前言 前面介紹了冒泡排序、選擇排序、插入排序、希爾排序,作為排序中經常用到了算法,還有堆排序、快速排序、歸并排序 堆排序(HeaSort) 堆排序的概念 堆排序是一種有效的排序算法,它利用了完全二叉樹的特性。在C語言…

復分析——第9章——橢圓函數導論(E.M. Stein R. Shakarchi)

第 9 章 橢圓函數導論 (An Introduction to Elliptic Functions) The form that Jacobi had given to the theory of elliptic functions was far from perfection; its flaws are obvious. At the base we find three fundamental functions sn, cn and dn. These functio…

商湯上海AI實驗室聯合發布:自動駕駛全棧式高精度標定工具箱(含車、IMU、相機、激光雷達等的標定)

前言 在自動駕駛技術飛速發展的今天,傳感器的精確標定對于確保系統性能至關重要。SensorsCalibration,一個專為自動駕駛車輛設計的標定工具箱,提供了一套全面的解決方案,用于校準包括IMU、激光雷達、攝像頭和雷達在內的多種傳感器…

基于Java平價平價汽車租賃系統設計和實現(源碼+LW+部署講解)

💗博主介紹:?全網粉絲10W,CSDN作者、博客專家、全棧領域優質創作者,博客之星、平臺優質作者、專注于Java、小程序技術領域和畢業項目實戰?💗 🌟文末獲取源碼數據庫🌟 感興趣的可以先收藏起來,…

【python】使用conda管理python項目:conda管理不同項目環境,pip下載最新的包

文章目錄 一. python包管理概述1. miniforge、Miniconda與Anaconda2. conda與pip的區別是什么?3. pip與conda配合使用 二. 使用conda管理不同py環境1. 創建一個環境2. 解決沖突 三. 命令合集1. conda1.1. 常用1.2. 環境管理1.3. 分享環境1.4. 包管理 2. 依賴沒有在c…

《RepViT Revisiting Mobile CNN From ViT Perspective》

期刊:CVPR 年份:2024 代碼:http://https: //github.com/THU-MIG/RepViT 摘要 最近,與輕量級卷積神經網絡(CNN)相比,輕量級視覺Transformer(ViTs)在資源受限的移動設備上表現出了更高的性能和更低的延遲。研究人員已…

無法訪問指向的web服務器(或虛擬主機)的目錄,請檢查網絡設置

微信公眾平臺,進行業務域名、JS接口安全域名、網頁授權域名配置時,遇到的問題中有:無法訪問指向的web服務器(或虛擬主機)的目錄,請檢查網絡設置,這里簡單記錄一下處理過程。 關于這個問題首先保證下載…

SHELL腳本學習(十四)gawk進階

一、使用變量 gawk支持兩種變量 內建變量自定義變量 1.1 內建變量 1.1.1 字段和記錄分隔符變量 數據字段變量允許使用美元符號 $ 和 位置來引用對應的字段。 $1 對應第一個數據字段,$2對應第二個數據字段,以此類推。 數據字段用字段分隔符劃定。默…

【基于R語言群體遺傳學】-1-哈代溫伯格基因型比例

前言 群體遺傳學是研究生物群體中基因的分布、基因頻率和基因型頻率的維持和變化的學科。它不僅探討遺傳病的發病頻率和遺傳方式,還研究基因頻率和變化的規律,為預防、監測和治療遺傳病提供重要信息。R語言作為一種強大的統計分析工具,在群體…

mybatis實現多表查詢

mybatis高級查詢【掌握】 1、準備工作 【1】包結構 創建java項目,導入jar包和log4j日志配置文件以及連接數據庫的配置文件; 【2】導入SQL腳本 運行資料中的sql腳本:mybatis.sql 【3】創建實體來包,導入資料中的pojo 【4】User…

TypeScript Project References npm 包構建小實踐

npm 包輸出 es/cjs 產物 在開發一個 npm 包時,通常需要同時輸出 ES 模塊和 CommonJS 模塊的產物供不同的構建進行使用。在只使用tsc進行產物編譯的情況下,我們通常可以通過配置兩個獨立的 tsconfig.json 配置文件,并在一個 npm script 中 執…

kubesphere自定義流水線基礎鏡像

背景 需求:在流水線基礎pod中使用python和jinja2模塊來動態渲染部署文件 由于ks提供的基礎鏡像無法滿足以上需求,在ks提供的maven鏡像的基礎上實現 實施 制作鏡像&并推送到private image repo FROM kubesphere/builder-maven:v3.2.0 RUN sed -i…

7.1作業

1.思維導圖 2.在堆區申請兩個長度為32的空間,實現兩個字符串的比較【非庫函數實現】 (1)定義函數,在對區申請空間 兩個申請,主函數需要調用2次 (2)定義函數,實現字符串的輸入 void input(char *p) (3)調用函數實現字符串比較…

BUT000增強字段BAPI結構激活出錯(BUPA_CENTRAL_CI_CHANGE)

導語:BP主數據增強字段,需要使用BAPI:BUPA_CENTRAL_CI_CHANGE進行值寫入,但是在SAP 2023以后的版本,激活會出錯,原因是因為SAP的一個結構同時包含了BUS00_EEW以及BUS00_EEWX兩個結構,導致結構字…

Spring Security 認證流程

Spring Scurity是spring生態下用于認證和授權的框架,具有高度的靈活性和可擴展行,本節主要對Spring Security的認證過程中進行概括性的介紹,主要介紹在該過程中,會涉及到哪些組件以及每個組件所承擔的職責,希望大家可以…