日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java开发中的Mutex vs Semaphore

發布時間:2025/4/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java开发中的Mutex vs Semaphore 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看一下stackoverflow上是怎么說的吧

原文地址:http://stackoverflow.com/questions/771347/what-is-mutex-and-semaphore-in-java-what-is-the-main-difference

Semaphore can be counted, while mutex can only count to 1.Suppose you have a thread running which accepts client connections. This thread can handle 10 clients simultaneously. Then each new client sets the semaphore until it reaches 10.
When the Semaphore has 10 flags, then your thread won't accept new connections Mutex are usually used for guarding stuff. Suppose your 10 clients can access multiple parts of the system. Then you can protect a part of the system with a mutex so when 1 client is connected to that sub-system,
no one else should have access. You can use a Semaphore for this purpose too. A mutex is a "Mutual Exclusion Semaphore".

簡單的說 就是Mutex是排它的,只有一個可以獲取到資源,?Semaphore也具有排它性,但可以定義多個可以獲取的資源的對象。

1.Semaphore

Semaphore維護了一組許可令牌,使用acquire方法去獲取許可令牌,而使用release方法去釋放一個令牌。實際上沒有真正的使用許可令牌,Semaphore僅僅維護了可用的計數器而已。

Semaphore通常用來限制可用訪問一些(物理或者邏輯)資源的訪問線程數。例如,下面的類使用Semaphore來控制對pool內item的訪問量。

示例:

class Pool {private static final int MAX_AVAILABLE = 100;private final Semaphore available = new Semaphore(MAX_AVAILABLE, true);public Object getItem() throws InterruptedException {available.acquire();return getNextAvailableItem();}public void putItem(Object x) {if (markAsUnused(x))available.release();}// Not a particularly efficient data structure; just for demoprotected Object[] items = ... whatever kinds of items being managedprotected boolean[] used = new boolean[MAX_AVAILABLE];protected synchronized Object getNextAvailableItem() {for (int i = 0; i < MAX_AVAILABLE; ++i) {if (!used[i]) {used[i] = true;return items[i];}}return null; // not reached }protected synchronized boolean markAsUnused(Object item) {for (int i = 0; i < MAX_AVAILABLE; ++i) {if (item == items[i]) {if (used[i]) {used[i] = false;return true;} elsereturn false;}}return false;}}

在訪問池內的item時,每個線程必須從Semaphore來獲取一個許可令牌,保證必須有一個item是可用的。當線程使用完item后,將item還回到pool中,此時訪問令牌返回給Semaphore。

注意:當調用acquire方法是沒有保持一個同步鎖,因為同步鎖會阻礙item被釋放給pool。Semaphore封裝了需要的同步操作來保證對pool的訪問進行限制,而不是為了維持pool本身的一致性來加入同步操作。

Semaphore默認設置為1,用來保證至少有一個許可令牌可用,此時可用看做一個mutext排它鎖。mutex因作為二分Semaphore而出名,要么有一個許可令牌,要么沒有許可令牌。當這樣使用時,二分Semaphore有熟悉(不像大部分lock的實現那樣),lock由線程釋放而非owner(Semaphore沒有ownership的概念)。這在某些特殊的場景下很有用,比如死鎖的恢復。

Semaphore類的構造方法可以接受一個fairness參數,當這個參數設置為false時,此類不保證線程獲取到許可令牌的順序,特別是當運行搶奪資源時,意味著一個線程使用acquire獲取許可令牌的時間可能會比一個等待隊列在它之前的線程獲取到令牌更早--邏輯上來說,新線程放置月等待隊列的頭部。當fairness參數設置為true時,Semaphore保證線程調用acquire方法時的順序獲取到令牌(即先進先出FIFO)

?

參考文獻:

【1】http://www.cnblogs.com/think-in-java/p/5520462.html

【2】http://blog.csdn.net/sunp823/article/details/49886051

【3】http://coolxing.iteye.com/blog/1236909

?

轉載于:https://www.cnblogs.com/davidwang456/p/6094947.html

總結

以上是生活随笔為你收集整理的java开发中的Mutex vs Semaphore的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 岛国av免费 | 厕拍极品| av超碰在线观看 | 红桃av | 香蕉视频黄色 | av第一福利| 亚洲制服在线观看 | 在线不卡一区 | 久久久久久国产精品 | av手机在线看 | 伦理片一区二区 | 国产av剧情一区二区三区 | 亚洲精品成a人 | 色批网站| 特黄特色大片免费 | 伊人tv | 精品欧美乱码久久久久久1区2区 | 精品国产大片大片大片 | 四虎影视永久地址 | 校园春色 亚洲色图 | 青草视频免费在线观看 | 啪啪av| 国产免费黄色片 | 中国女人做爰视频 | 久久久久亚洲av成人毛片韩 | 精品成人av一区二区在线播放 | 日本黄色片 | 国产在线不卡av | 麻豆视频免费入口 | 三级色网| 夜夜操天天操 | 农村妇女毛片精品久久久 | 日日碰碰 | 91丝袜国产在线观看 | 天堂av√| 久久99视频 | 黄色片久久久久 | 国产精品jizz在线观看无码 | 国产成人在线免费视频 | 国产欧美一区二区三区国产幕精品 | 亚洲不卡av一区二区 | 97精品一区 | 亚洲欧洲精品一区二区三区 | 久久精品国产亚洲av久 | 蜜桃久久精品 | 91精品色 | 黑人日批视频 | 国产精品黄色片 | 少妇av在线| 亚洲一区二区三区电影 | 国产av无码专区亚洲av麻豆 | 国产精品77777| 国产亚洲激情 | 公与妇乱理三级xxx www色 | 一级黄色片大全 | 国产一区二区精品久久 | 久久九九色 | 婷婷狠狠操 | 色姑娘天天操 | 国产伦精品一区二区. | av电影在线观看网址 | 久久久久久久久久久久国产 | 国产成人在线免费观看视频 | 在线日韩一区二区 | 麻豆视屏| 日日干夜夜撸 | 翔田千里一区 | 午夜在线观看免费视频 | 国产黄站 | 欧美鲁鲁 | 国产高潮呻吟久久 | 波多野结衣欲乱上班族 | 欧美精品久久99 | 欧美精品乱码视频一二专区 | 国产免费视屏 | 99热r| 网友自拍视频 | 国产一区二区三区电影在线观看 | 日本一区视频在线观看 | 不卡网av| 91二区| 91涩涩视频| 亚洲一品道 | 国产高潮视频在线观看 | 欧美亚洲一区 | 欧美色射 | 国产女人精品视频 | 日韩久久一区二区三区 | 丰满少妇一区二区三区 | gai视频在线观看资源 | 色婷婷综合视频 | 搞黄视频在线观看 | 国产精品国产三级国产aⅴ9色 | 天天艹夜夜 | 欧美一区二区日韩一区二区 | 亚洲一区二区三区黄色 | 欧美国产激情 | 黄网站在线观看视频 | 欧美一区二区性久久久 |