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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

下面的類使用信號量控制對內(nèi)容池的訪問:

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已經(jīng)提供了相關(guān)實現(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。如果某線程在調(diào)用release等待之前調(diào)用take方法,那么調(diào)用release方法的線程仍然知道take方法已經(jīng)被某個線程調(diào)用過了,因為該Semaphore內(nèi)部保存了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();}}

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

把Semaphore當鎖來使用:

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

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

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆视频在线看| 97精品视频在线看| 日韩视频在线一区二区三区 | 久久亚洲成人| 婷婷中文字幕一区| 欧美精选一区二区三区| 红桃视频国产一区| 久久99伊人| 综合激情在线| 青草久久视频| 国产精品99久久免费观看| 97精品久久| 老牛国内精品亚洲成av人片| 国产一区二区三区不卡av | 免费国产亚洲视频| 日本在线成人| 国产日韩欧美一区二区三区在线观看| 国产精品流白浆在线观看| 精品日韩一区| 日韩网站中文字幕| 国产手机视频一区二区| 亚洲美女久久| 麻豆高清免费国产一区| 国产一区二区三区成人欧美日韩在线观看| 日韩一区亚洲二区| 欧美日韩三区| 日韩精选在线| 精品91福利视频| 激情视频一区二区三区| 亚洲婷婷丁香| 美女精品久久| 香蕉精品视频在线观看| 综合激情网...| 久久精品国产999大香线蕉| 久久精品在线| 日韩三区四区| 欧美成人a交片免费看| 亚洲精华国产欧美| 日韩超碰人人爽人人做人人添| 精品午夜av| 五月天久久777| 久久国产精品免费精品3p| 日韩久久精品| 亚洲精品一级| 免费看av不卡| 亚洲日本国产| 吉吉日韩欧美| 天堂精品久久久久| 黑森林国产精品av| 久热精品在线| 国产成人免费视频网站视频社区| 最新国产拍偷乱拍精品| 国产毛片一区二区三区| 欧美综合另类| 国产精品一线天粉嫩av| 亚洲天堂黄色| 国产精品亚洲产品| 香蕉精品视频在线观看| 免费一区二区三区在线视频| 中文一区二区| 国产成人精品一区二区免费看京 | 精品黄色一级片| 国产美女精品| 精品中文字幕一区二区三区| 夜久久久久久| 美女尤物国产一区| 久久亚洲电影| 久久精品1区| 麻豆视频久久| 亚洲精品福利| 91精品推荐| 久久精品国产免费| 午夜亚洲福利| 激情久久中文字幕| 久久精品国产999大香线蕉| 亚洲欧洲免费| 亚洲精品国产偷自在线观看| 日本一区二区高清不卡| 综合国产精品| 久久久水蜜桃av免费网站| 国产精品色婷婷在线观看| 日韩视频一区二区三区在线播放免费观看| 久久97视频| 国产亚洲精品精品国产亚洲综合 | 久久在线电影| 福利一区二区三区视频在线观看| 日本精品另类| 中文不卡在线| 美女亚洲一区| 国精品产品一区| 欧美天堂在线| 日韩中文av| 日韩天堂av| 91精品国产乱码久久久久久久| 麻豆极品一区二区三区| 欧美久久亚洲| 日韩专区视频网站| 美女久久一区| 亚洲午夜在线| 色老板在线视频一区二区| 国产成人免费视频网站视频社区| 国产精品tv| 久久激情av| 亚洲精品伊人| 午夜一区在线| 欧美日韩国产在线观看网站| 天堂中文av在线资源库| 国产中文字幕一区二区三区| 麻豆91精品91久久久的内涵| 国产精品一区二区美女视频免费看| 天堂精品久久久久| 免费观看日韩电影| 石原莉奈在线亚洲三区| 99国产精品自拍| 不卡一区2区| 国产视频一区在线观看一区免费| 女同性一区二区三区人了人一| 亚洲国产专区| 国产综合欧美| 伊人久久国产| 日韩高清成人| 成人免费网站www网站高清| 成人午夜在线| 91中文字幕精品永久在线| 国产精品久久久久久久久久10秀| 麻豆一区二区在线| 麻豆精品视频在线| 高清不卡一区| 播放一区二区| 婷婷综合五月| 丝袜诱惑制服诱惑色一区在线观看| 伊人精品视频| 蜜臀av国产精品久久久久| 亚洲麻豆一区| 国产欧美日本| 精品色999| 日本精品影院| 国产综合精品一区| 蜜桃久久精品一区二区| 日韩欧美高清一区二区三区| 国产一卡不卡| 日韩成人精品一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 天堂av在线| 欧美一区二区性| 热久久免费视频| 日韩精品一区二区三区av | 精品三级在线| 久久精品中文| 亚洲无线观看| 国产高清精品二区| 日韩综合精品| 男人天堂欧美日韩| 国产欧美日韩影院| 中文字幕人成乱码在线观看 | 九色精品91| 亚洲精品欧美| 欧美精品不卡| 天堂网av成人| 免费精品视频在线| 免费在线成人| 欧美成人亚洲| 日韩中文av| sm久久捆绑调教精品一区| 激情六月综合| 欧美在线首页| 成人在线黄色| 在线视频观看日韩| 日韩精品亚洲专区在线观看| 精品一区二区三区亚洲| 视频一区中文| 国产精品天堂蜜av在线播放| 三级小说欧洲区亚洲区| 蜜臀久久99精品久久久久久9| 国产精品15p| 91九色精品| 欧美综合社区国产| 韩国精品主播一区二区在线观看| 水蜜桃久久夜色精品一区的特点| 免费亚洲婷婷| 视频在线观看一区二区三区| 国产精品一区二区三区美女| 亚洲第一区色| 国产免费久久| 国产美女一区| 91视频一区| 日本中文字幕一区二区视频| 日韩毛片视频| 日韩激情中文字幕| 午夜精品成人av| 久久精品99国产精品日本| 久久网站免费观看| 麻豆视频一区| 日韩综合一区二区三区| 成人日韩在线| 国产精品任我爽爆在线播放| 亚洲福利一区| 国产96在线亚洲| 日韩久久一区| 一本一道久久a久久精品蜜桃|