国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Binary Semaphore 和 Reentrant Lock 傻傻分不清!

開發(fā) 前端
在本教程中,我們將探討二進(jìn)制信號(hào)量(Binary Semaphore)和可重入鎖(Reentrant Lock)。另外,我們會(huì)將它們相互比較,看看哪一個(gè)最適合常見情況。

[[377702]]

1. 引言

在本教程中,我們將探討二進(jìn)制信號(hào)量(Binary Semaphore)和可重入鎖(Reentrant Lock)。另外,我們會(huì)將它們相互比較,看看哪一個(gè)最適合常見情況。

2. 什么是二進(jìn)制信號(hào)量

二進(jìn)制信號(hào)量在單個(gè)資源的訪問上提供信令機(jī)制。換句話說,二進(jìn)制信號(hào)量提供了一種互斥機(jī)制,一次只允許一個(gè)線程訪問一個(gè)關(guān)鍵部分。它只保留一個(gè)通行證,因此二進(jìn)制信號(hào)量只有兩種狀態(tài):可用(count=1) 和不可用(count=0)。

我們使用Java中的 Semaphore 類來討論一個(gè)簡(jiǎn)單的二進(jìn)制信號(hào)量的實(shí)現(xiàn) :

  1. Semaphore binarySemaphore = new Semaphore(1); 
  2. try { 
  3.     binarySemaphore.acquire(); 
  4.     assertEquals(0, binarySemaphore.availablePermits()); 
  5. } catch (InterruptedException e) { 
  6.     e.printStackTrace(); 
  7. } finally { 
  8.     binarySemaphore.release(); 
  9.     assertEquals(1, binarySemaphore.availablePermits()); 

在這里,我們可以觀察到,acquire方法將可用許可減少了一個(gè)。類似地,release方法將可用許可增加1。

另外,Semaphore 類提供了 fairness 參數(shù)。當(dāng)設(shè)置為true時(shí),fairness 參數(shù)確保請(qǐng)求線程獲取許可的順序(基于它們的等待時(shí)間):

  1. Semaphore binarySemaphore = new Semaphore(1, true); 

3. 什么是重入鎖?

可重入鎖是一種互斥機(jī)制,允許線程在沒有死鎖的情況下(多次)重入資源上的鎖。

進(jìn)入鎖的線程每次增加一個(gè)持有計(jì)數(shù)。類似地,請(qǐng)求解鎖時(shí)持有計(jì)數(shù)減少。因此,資源被鎖定,直到計(jì)數(shù)器返回到零。例如,讓我們看一個(gè)使用Java中 ReentrantLock 類的簡(jiǎn)單實(shí)現(xiàn):

  1. ReentrantLock reentrantLock = new ReentrantLock(); 
  2. try { 
  3.     reentrantLock.lock(); 
  4.     assertEquals(1, reentrantLock.getHoldCount()); 
  5.     assertEquals(true, reentrantLock.isLocked()); 
  6. } finally { 
  7.     reentrantLock.unlock(); 
  8.     assertEquals(0, reentrantLock.getHoldCount()); 
  9.     assertEquals(false, reentrantLock.isLocked()); 

這里,lock方法將持有計(jì)數(shù)增加1,并鎖定資源。類似地,unlock方法減少持有計(jì)數(shù),如果持有計(jì)數(shù)為零,則解鎖資源。當(dāng)線程重新進(jìn)入鎖時(shí),它必須請(qǐng)求相同次數(shù)的解鎖以釋放資源:

  1. reentrantLock.lock(); 
  2. reentrantLock.lock(); 
  3. assertEquals(2, reentrantLock.getHoldCount()); 
  4. assertEquals(true, reentrantLock.isLocked()); 
  5.  
  6. reentrantLock.unlock(); 
  7. assertEquals(1, reentrantLock.getHoldCount()); 
  8. assertEquals(true, reentrantLock.isLocked()); 
  9.  
  10. reentrantLock.unlock(); 
  11. assertEquals(0, reentrantLock.getHoldCount()); 
  12. assertEquals(false, reentrantLock.isLocked()); 

與Semaphore類類似,ReentrantLock類也支持 fairness 參數(shù):

  1. ReentrantLock reentrantLock = new ReentrantLock(true); 

4. 二進(jìn)制信號(hào)量與重入鎖

4.1. 機(jī)制

二進(jìn)制信號(hào)量是一種信令機(jī)制,而可重入鎖是一種鎖定機(jī)制。

4.2.所有權(quán)

沒有線程是二進(jìn)制信號(hào)量的所有者。但是,成功鎖定資源的最后一個(gè)線程是可重入鎖的所有者。

4.3. 本質(zhì)

二進(jìn)制信號(hào)量本質(zhì)上是不可重入的,這意味著同一個(gè)線程不能重新獲取關(guān)鍵部分,否則會(huì)導(dǎo)致死鎖。另一方面,可重入鎖本質(zhì)上允許同一線程多次重入鎖。

4.4. 靈活性

二進(jìn)制信號(hào)量通過允許鎖定機(jī)制和死鎖恢復(fù)的自定義實(shí)現(xiàn),提供了更高級(jí)別的同步機(jī)制。因此,它為開發(fā)人員提供了更多的控制。然而,可重入鎖則是一種低級(jí)同步,具有固定的鎖機(jī)制。

4.5. 可修改性

二進(jìn)制信號(hào)量支持 wait 和 signal(在Java的Semaphore類中獲取和釋放)等操作,以允許任何進(jìn)程修改可用的許可證。另一方面,只有鎖定/解鎖資源的同一線程才能修改可重入鎖。

4.6. 死鎖恢復(fù)

二進(jìn)制信號(hào)量提供了一種非所有權(quán)釋放機(jī)制。因此,任何線程都可以釋放二進(jìn)制信號(hào)量的死鎖恢復(fù)許可。

相反,在重入鎖的情況下很難實(shí)現(xiàn)死鎖恢復(fù)。例如,如果可重入鎖的所有者線程進(jìn)入睡眠或無限等待狀態(tài),就不可能釋放資源,從而導(dǎo)致死鎖情況。

5. 總結(jié)

在這篇短文中,我們探討了二進(jìn)制信號(hào)量和可重入鎖。

首先,我們討論了二進(jìn)制信號(hào)量和可重入鎖的基本定義,以及Java中的基本實(shí)現(xiàn)。然后,我們根據(jù)機(jī)制、所有權(quán)和靈活性等參數(shù)對(duì)它們進(jìn)行了比較。

我們可以肯定地得出結(jié)論二進(jìn)制信號(hào)量為互斥提供了一種基于非所有權(quán)的信令機(jī)制。同時(shí),它還可以進(jìn)一步擴(kuò)展,以提供鎖定功能和容易的死鎖恢復(fù)。

另一方面,可重入鎖提供了具有基于所有者的鎖定功能的可重入互斥,作為簡(jiǎn)單的互斥鎖非常有用。

本文轉(zhuǎn)載自微信公眾號(hào)「鍋外的大佬」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系鍋外的大佬公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 鍋外的大佬
相關(guān)推薦

2022-05-05 13:54:37

SPI機(jī)制APISPI

2021-05-09 21:57:08

數(shù)據(jù)倉(cāng)庫(kù)Olap

2021-08-04 09:00:55

閉包Go調(diào)用

2022-05-15 21:52:04

typeTypeScriptinterface

2019-06-18 09:45:19

正向代理反向代理IT

2021-03-10 08:56:37

Zookeeper

2021-10-06 23:31:45

HibernateJPASpring Data

2021-03-23 10:45:23

CookieSession前端

2025-08-18 03:25:00

2020-03-03 17:35:09

Full GCMinor

2021-08-02 12:50:45

sessiontokenJava

2024-02-29 09:08:56

Encoding算法加密

2021-07-27 07:31:16

JavaArrayList數(shù)組

2022-02-25 09:14:33

類變量共享實(shí)例變量

2021-04-21 09:00:50

VRAR虛擬現(xiàn)實(shí)技術(shù)

2018-12-17 12:30:05

Kubernetes存儲(chǔ)存儲(chǔ)卷

2022-04-15 11:47:47

LVSNginx負(fù)載均衡

2020-10-30 08:20:04

SD卡TF卡存儲(chǔ)

2023-04-11 15:57:49

JavaScriptCSSHTML

2020-11-11 07:32:18

MySQL InnoDB 存儲(chǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

成人片在线播放| 日韩av电影院| 欧美日韩国产欧美日美国产精品| 日韩欧美国产wwwww| 欧美亚洲另类在线| 性生活免费观看视频| 在线理论视频| 日韩三级视频| 国产成人精品一区二区三区四区| 亚洲私人影院在线观看| 国产视频一区二区在线观看| 久久这里只有精品6| 亚洲国产精品高清久久久| 91免费看片网站| 美女18一级毛片一品久道久久综合| 国产女优一区| 欧美激情亚洲精品| avtt天堂资源网站| 欧美人与拘性视交免费看| 日韩三级在线观看| 91久久久久久久久久久久久| 超碰在线公开97| 看亚洲a级一级毛片| 国产精品一区免费在线观看| 床上的激情91.| 欧美日韩国产中文| 国产精品91在线观看| 国产在线青青草| 亚洲资源一区| 亚洲黄色天堂| 精品久久久久久久久久久院品网| 色视频一区二区三区| 91黄色在线| 精品一区二区三区视频在线观看| 日韩精品免费电影| 国产aaa免费视频| 欧美啪啪网站| 亚洲精品一卡二卡| 国产精品伊人日日| 欧美男人天堂| 久久精品国产在热久久| 日本韩国欧美三级| 国产精品久久久久久久久免费| 天天看片激情网站| 97精品视频在线看| 91欧美在线| 91性感美女视频| 日本精品在线播放| 久久综合九色欧美综合狠狠| 国产一区二中文字幕在线看 | 日韩国产欧美一区二区三区| 88国产精品欧美一区二区三区| 日本亚洲导航| 久草免费在线视频| 久久久国产综合精品女国产盗摄| 国内伊人久久久久久网站视频 | 天堂av资源在线观看| cao在线观看| av免费在线播放网站| 免费男女羞羞的视频网站中文版| 在线看三级网站视频| 色综合久久综合中文综合网| 日本精品一区二区三区四区| 国产电影一区| 日韩免费av片在线观看| 老司机免费在线视频| 四虎国产精品成人免费影视| 午夜久久久影院| 日韩少妇内射免费播放18禁裸乳| 亚洲激情午夜| 色综合天天综合网国产成人综合天| 日本精品一区二区三区四区| 国产午夜精品福利| 狠狠操夜夜操| 91精品国产麻豆| 国产亚洲精彩久久| 国产91精品网站| 国产精品毛片| 一区高清视频| 亚洲欧美一区二区三区国产精品| 亚洲欧美视频一区二区| 欧美高清无遮挡| 亚洲美女视频| 韩日视频在线观看| 亚洲高清中文字幕| 888av在线| 亚洲丝袜在线视频| 电影久久久久久| 91精品国产高清久久久久久91 | 欧美与欧洲交xxxx免费观看| 欧美88av| 神马影院一区二区| 久久色在线观看| 国产专区视频| 欧美疯狂性受xxxxx喷水图片| 国产蜜臀在线| 亚洲午夜未满十八勿入免费观看全集| 成年人网站在线| 欧美午夜精品久久久久久孕妇| 中文字幕第36页| 国产精品你懂的在线欣赏| 成人亚洲欧美| 亚洲精品中文字幕在线| 欧美午夜视频网站| 日本精品专区| 色素色在线综合| 在线观看二区| 亚洲h动漫在线| 免费看涩涩视频| 亚洲午夜精品久久久久久久久| 在线视频国产三级| 欧美精品亚洲二区| 日本一本中文字幕| 亚洲色图在线播放| 亚洲高清黄色| 69174成人网| 国产视频一区在线观看 | 96av麻豆蜜桃一区二区| 欧美极品另类| 91久久久久久久久久| 国产精品你懂的在线欣赏| 欧美影视资讯| 亚洲欧美影院| 色综合一个色综合亚洲| 国产精品白浆| 蜜桃视频在线观看91| 久久久久国产成人精品亚洲午夜 | 欧美猛男超大videosgay| 成人ssswww在线播放| 国产成+人+综合+亚洲欧洲| 紧缚捆绑精品一区二区| 亚洲第一视频| 91精品国产91久久久久久| 国产精品一二| 成人精品福利视频| 成人高清在线视频| 亚洲精品一区视频| 精品久久久久久久一区二区蜜臀| 日本乱理伦在线| 中文字幕日韩欧美| 精品亚洲国内自在自线福利| 国产在线|日韩| 韩国一区二区av| 一区二区三区在线看| 美女av电影| 欧美三级中文字| 一区二区亚洲视频| 中文字幕在线亚洲三区| 欧美成人精品福利| 国产精品成人a在线观看| 九色在线视频观看| 色综合 综合色| 制服丝袜中文字幕在线| 欧美成人艳星乳罩| 巨胸喷奶水www久久久免费动漫| 91精品国产综合久久精品麻豆| 亚洲做受高潮| 亚洲日韩第一页| 色综合蜜月久久综合网| 欧美 国产 小说 另类| 亚洲欧洲高清在线| 秋霞成人午夜伦在线观看| 国产在线精品一区二区三区| 国产精品卡一卡二| 狼人精品一区二区三区在线| 毛片毛片毛片毛片毛片毛片| 91精品国产乱码久久久久久久久 | 国产伦理精品| 一区一区视频| 色老头一区二区三区在线观看| 久久综合九色综合97婷婷女人 | 色乱码一区二区三区熟女| 亚洲777理论| 97精品一区| 免费在线看v| 国产精品一区二区不卡视频| 色婷婷精品久久二区二区蜜臀av | 亚洲一区久久久| 中文字幕一区二区三区av| 小h片在线观看| 亚洲一区二区少妇| 久久久久久99久久久精品网站| 在线看片不卡| 成人线上播放| 亚洲精品日韩成人| 亚洲精品少妇30p| av成人亚洲| 能在线观看的av| 欧美国产日韩精品| 亚洲激情自拍偷拍| 亚洲小说区图片区| 成人亲热视频网站| 欧美日韩国产综合草草| 美腿丝袜亚洲三区| 美女av一区| 免费黄色电影在线观看| 中文网丁香综合网| 日本在线观看天堂男亚洲| 在线不卡一区二区| 国产欧美日韩另类一区|