亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java基于Semaphore構建阻塞對象池

瀏覽:96日期:2022-09-02 13:16:08

java中使用Semaphore構建阻塞對象池

Semaphore是java 5中引入的概念,叫做計數信號量。主要用來控制同時訪問某個特定資源的訪問數量或者執行某個操作的數量。

Semaphore中定義了一組虛擬的permits,通過獲取和釋放這些permits,Semaphore可以控制資源的個數。

Semaphore的這個特性可以用來構造資源池,比如數據庫連接池等。

Semaphore有兩個構造函數:

public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(int permits, boolean fair) { sync = fair ? new FairSync(permits) : new NonfairSync(permits); }

permits定義了許可資源的個數,而fair則表示是否支持FIFO的順序。

兩個比較常用的方法就是acquire和release了。

public void acquire() throws InterruptedException { sync.acquireSharedInterruptibly(1); } public void release() { sync.releaseShared(1); }

其中acquire用來獲取資源,release用來釋放資源。

有了這兩個特性, 我們看一下怎么使用Semaphore來定義一個一個有界容器。

我們可以將Semaphore初始化為容器池大小,并且在容器池獲取資源時調用acquire,將資源返回給容器池之后再調用release。

我們看下面的一個實現:

public class SemaphoreUsage<T> { private final Set<T> set; private final Semaphore sem; public SemaphoreUsage(int bound){ this.set = Collections.synchronizedSet(new HashSet<T>()); sem= new Semaphore(bound); } public boolean add (T o) throws InterruptedException{ sem.acquire(); boolean wasAdded = false; try{ wasAdded=set.add(o); return wasAdded; }finally { if(!wasAdded){sem.release(); } } } public boolean remove(Object o){ boolean wasRemoved = set.remove(o); if(wasRemoved){ sem.release(); } return wasRemoved; }}

上面的例子我們定義了一個有界的synchronizedSet。 要注意一點是在add方法中,只有add成功之后才會調用release方法。

本文的例子請參考https://github.com/ddean2009/learn-java-concurrency/tree/master/Semaphore

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 久久亚洲精品成人 | 国产精品入口麻豆免费 | 福利在线观看视频 | a久久久久一级毛片护士免费 | 精品一区二区三区自拍图片区 | 一级毛片高清免费播放 | 免费a级毛片无码 | mm1313亚洲国产精品无 | 久久夜色精品国产尤物 | 在线播放国产不卡免费视频 | 一级黄片毛片 | 免费视频网站在线观看黄 | 国产免费久久精品99re丫y | 成人精品在线视频 | 成年女人天堂香蕉网视频 | 1024手机在线基地 | 最新国产成人综合在线观看 | 亚洲高清免费在线观看 | 日韩女同一区二区三区 | 男女做a一级视频免费观看 男女喷水视频 | 风流慈禧一级毛片在线播放 | 中国xxxxx高清免费看视频 | 色婷婷亚洲综合五月 | a一级免费视频 | 日本一极毛片兔费看 | 轻轻操在线播放 | 国产乳摇福利视频在线观看 | 高h喷水荡肉爽文各种场合 高h辣肉各种姿势爽文bl | 国产精品观看在线亚洲人成网 | 玖玖中文字幕 | 黄视频在线免费看 | 久久精品韩国日本国产 | 成人a视频在线观看 | 女人精69xxxxx免费视频 | 9丨精品国产高清自在线看 9久9久女女免费精品视频在线观看 | 亚洲精品乱码电影在线观看 | 黑人操日本人视频 | 日韩无套 | 精品国产香蕉 | 香蕉视频久久 | 91妖精视频|