日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Java信號量Semaphore原理及代碼實例

瀏覽:160日期:2022-08-22 15:52:23

Semaphore 通常用于限制可以訪問某些資源(物理或邏輯的)的線程數(shù)目。自從5.0開始,jdk在java.util.concurrent包里提供了Semaphore 的官方實現(xiàn),因此大家不需要自己去實現(xiàn)Semaphore。

下面的類使用信號量控制對內容池的訪問:

import java.util.concurrent.Semaphore; 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(); // 釋放一個許可,將其返回給信號量 } // 僅作示例參考,非真實數(shù)據(jù) protected Object[] items = null; protected 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; } 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; } else return false; } } return false; } }

雖然JDK已經提供了相關實現(xiàn),但是還是很有必要去熟悉如何使用Semaphore及其背后的原理。做一個簡單的Semaphore實現(xiàn):

class SemaphoreTest { private boolean signal = false; public synchronized void take() { this.signal = true; this.notify(); } public synchronized void release() throws InterruptedException { while (!this.signal) wait(); this.signal = false; } }

使用這個semaphore可以避免錯失某些信號通知。用take方法來代替notify,release方法來代替wait。如果某線程在調用release等待之前調用take方法,那么調用release方法的線程仍然知道take方法已經被某個線程調用過了,因為該Semaphore內部保存了take方法發(fā)出的信號。而wait和notify方法就沒有這樣的功能。

可計數(shù)的Semaphore:

class SemaphoreTest { private int signals = 0; public synchronized void take() { this.signals++; this.notify(); } public synchronized void release() throws InterruptedException { while (this.signals == 0) wait(); this.signals--; } }

Semaphore上限:

class SemaphoreTest {private int signals = 0;private int bound = 0;public SemaphoreTest(int upperBound) {this.bound = upperBound;}public synchronized void take() throws InterruptedException {while (this.signals == bound)wait();this.signals++;this.notify();}public synchronized void release() throws InterruptedException {while (this.signals == 0)wait();this.signals--;this.notify();}}

當已經產生的信號數(shù)量達到了上限,take方法將阻塞新的信號產生請求,直到某個線程調用release方法后,被阻塞于take方法的線程才能傳遞自己的信號。

把Semaphore當鎖來使用:

當信號量的數(shù)量上限是1時,Semaphore可以被當做鎖來使用。通過take和release方法來保護關鍵區(qū)域。

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

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
女同性一区二区三区人了人一| 国产精品亚洲一区二区三区在线观看| 国产精品高颜值在线观看| 国产福利亚洲| 美女视频黄久久| 麻豆久久一区二区| 久久精品国产亚洲一区二区三区| 国产欧美欧美| 国产高清亚洲| 久久99高清| 一区二区三区四区日本视频| 日韩啪啪电影网| 久久亚洲专区| 日韩午夜av| 噜噜噜躁狠狠躁狠狠精品视频| 爽好多水快深点欧美视频| 在线亚洲欧美| 日本成人在线视频网站| 欧美在线精品一区| 老色鬼精品视频在线观看播放| 久久久久亚洲精品中文字幕| sm久久捆绑调教精品一区| 99久久婷婷| 亚洲一区二区三区在线免费| 欧美日韩中文| 欧美aa在线观看| 最新日韩av| 日本一区中文字幕| 成人在线视频区| 91久久国产| 日韩精品亚洲aⅴ在线影院| 日韩高清在线观看一区二区| 国产日产高清欧美一区二区三区 | 日韩三区免费| 蜜臀av免费一区二区三区| 久色成人在线| 美腿丝袜在线亚洲一区| 婷婷综合六月| 一区二区三区国产在线| 国产精品成人国产| 在线视频观看日韩| 88久久精品| 成人欧美一区二区三区的电影| 亚洲精品在线观看91| 国产午夜久久av| 欧洲亚洲一区二区三区| 中文字幕日韩高清在线| 国产一区二区三区四区| 亚洲一区中文| 另类综合日韩欧美亚洲| 午夜国产精品视频免费体验区| 中文字幕免费一区二区| 国产videos久久| 丝袜亚洲另类欧美| 久久伊人亚洲| 国产视频一区在线观看一区免费| 欧美日韩夜夜| 伊人久久高清| 日韩高清在线观看一区二区| 日韩三区免费| 国产精品自拍区| 影院欧美亚洲| 久久麻豆视频| 亚洲最大av| 国产一区二区三区不卡av| 日韩中文字幕一区二区三区| 免费黄网站欧美| av亚洲一区二区三区| 日韩avvvv在线播放| 久久国产高清| 麻豆精品在线播放| 久久一二三区| 国产午夜一区| 久久a爱视频| 在线亚洲欧美| 国产模特精品视频久久久久| 另类小说一区二区三区| 国产成人精品一区二区三区免费| 成人午夜毛片| 欧美极品一区二区三区| 精品午夜久久| 97精品视频在线看| 日本免费一区二区三区四区| 超级白嫩亚洲国产第一| 久久香蕉精品香蕉| 欧美中文高清| 久久超级碰碰| 久久这里只有| 久久久久一区| 婷婷综合一区| 欧美精品自拍| 欧美一区三区| 久久亚洲一区| 亚洲欧美网站在线观看| 日韩在线网址| 欧美国产专区| 日韩高清欧美| 免费观看日韩电影| 亚洲精品一二三**| 夜鲁夜鲁夜鲁视频在线播放| 午夜在线精品| 日韩av电影一区| 国产精品久久久久久久久久久久久久久| 国产欧美日韩在线观看视频| 久久久久国产精品一区三寸| 国产精品女主播一区二区三区| 日本aⅴ免费视频一区二区三区| 欧美91精品| 国产精品大片免费观看| 国产福利电影在线播放| 国产精区一区二区| 国产精品久久久久久久久妇女| 蜜桃久久久久久| 国产一区二区三区四区五区| 99精品视频在线| 免费日本视频一区| 99久久久国产精品美女| 亚洲精品日本| 欧美成人一二区| 国产精品第十页| 日韩综合小视频| 亚洲三级网址| 久久网站免费观看| 久久三级视频| 精品美女在线视频| 蜜桃视频免费观看一区| а√天堂8资源在线| 国产精品一区2区3区| 黑丝一区二区| 九一国产精品| 精品一区视频| 你懂的亚洲视频| 免费人成黄页网站在线一区二区 | 亚洲精品小说| 水蜜桃精品av一区二区| 亚洲视频电影在线| 亚洲少妇自拍| 噜噜噜久久亚洲精品国产品小说| 欧美一区二区三区高清视频 | 精品国产乱码久久久| 国产日韩欧美在线播放不卡| 亚洲日本国产| 国产精品嫩草99av在线| 999在线观看精品免费不卡网站| 欧美粗暴jizz性欧美20| 国内激情久久| 免费日本视频一区| 国产欧美日韩综合一区在线播放| 91免费精品国偷自产在线在线| 免费国产亚洲视频| 男人的天堂久久精品| 亚洲婷婷在线| 免费视频久久| 一区免费视频| 国产精品久久久久久av公交车| 久久国产人妖系列| 国产精品一区毛片| 国产精品yjizz视频网| 日韩精品2区| 美女国产精品| 免费观看久久久4p| 麻豆国产一区| 另类专区亚洲| 久久精品成人| 97久久亚洲| 老牛国产精品一区的观看方式| 欧美国产另类| 激情视频一区二区三区| 蜜桃视频在线观看一区二区| 国产精品最新自拍| 亚洲综合五月| 97人人精品| 亚洲三级国产| 婷婷国产精品| 九色porny丨国产首页在线| 日韩在线二区| 婷婷久久免费视频| 欧美日韩视频一区二区三区| 麻豆成全视频免费观看在线看| 亚洲综合电影| 国产精品不卡| 精品国产a一区二区三区v免费| 一二三区精品| 日韩avvvv在线播放| 久久亚洲一区| 欧美另类专区| 一区二区视频欧美| 国产精品视频一区二区三区四蜜臂| 国产一区二区三区黄网站| 久热re这里精品视频在线6| 国产在线观看91一区二区三区 | 老司机精品视频网| 亚洲尤物av| 综合国产在线| 亚洲三级观看| 免费国产亚洲视频| 国产免费av国片精品草莓男男| 99国产精品| 婷婷成人基地| 久久精品主播|