Semaphore信號量

信號量為多線程協(xié)作提供了更為強大的控制方法拂苹。從廣義來說艇肴,信號量時對鎖的擴展估灿。無論是內部鎖synchronized還是重入鎖ReentrantLock扫沼,一次只允許一個線程訪問一個資源出爹,而信號量卻可以允許多個線程,同時訪問同一個資源缎除。
信號量的構造函數(shù)

public Semaphore(int permits) 
public Semaphore(int permits, boolean fair)

permits 準入數(shù)
fair 是否公平

信號量的主要邏輯方法:

 public void acquire()
 public void acquireUninterruptibly()
 public boolean tryAcquire()
 public boolean tryAcquire(long timeout, TimeUnit unit)
 public void release()

acquire方法嘗試獲得一個準入的許可严就。如果無法獲得,則線程會等待器罐,直到有線程釋放一個許可或者當前線程被中斷梢为。
acquireUninterruptibly與acquire方法類似,但是不響應中斷。
tryAcquire嘗試獲得一個許可铸董,不等待祟印,成功返回true,失敗返回false粟害。
tryAcquire(long timeout, TimeUnit unit)設置一個等待時常蕴忆,在等待時常內成功獲得則返回true,超過時長還沒有獲得則返回false悲幅。
release線程訪問資源結束后釋放一個許可套鹅。
使用實例如下:

class SemaDemo implements Runnable{
    final Semaphore semaphore=new Semaphore(5);
    @Override
    public void run() {
        try {
            semaphore.acquire();
            Thread.sleep(5000);
            System.out.println(Thread.currentThread().getId()+"DONE");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }finally {
            semaphore.release();
        }
    }

    public static void main(String[] args) {
        SemaDemo semaDemo=new SemaDemo();
        for (int i=0;i<20;i++){
            Thread thread=new Thread(semaDemo);
            thread.start();
        }
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汰具,隨后出現(xiàn)的幾起案子卓鹿,更是在濱河造成了極大的恐慌,老刑警劉巖留荔,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件减牺,死亡現(xiàn)場離奇詭異,居然都是意外死亡存谎,警方通過查閱死者的電腦和手機拔疚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來既荚,“玉大人稚失,你說我怎么就攤上這事∏∑福” “怎么了句各?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晴叨。 經(jīng)常有香客問我凿宾,道長,這世上最難降的妖魔是什么兼蕊? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任初厚,我火速辦了婚禮,結果婚禮上孙技,老公的妹妹穿的比我還像新娘产禾。我一直安慰自己,他們只是感情好牵啦,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布亚情。 她就那樣靜靜地躺著,像睡著了一般哈雏。 火紅的嫁衣襯著肌膚如雪楞件。 梳的紋絲不亂的頭發(fā)上衫生,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音土浸,去河邊找鬼罪针。 笑死,一個胖子當著我的面吹牛栅迄,可吹牛的內容都是我干的。 我是一名探鬼主播皆怕,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼毅舆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了愈腾?” 一聲冷哼從身側響起憋活,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虱黄,沒想到半個月后悦即,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡橱乱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年辜梳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳叠。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡作瞄,死狀恐怖,靈堂內的尸體忽然破棺而出危纫,到底是詐尸還是另有隱情宗挥,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布种蝶,位于F島的核電站契耿,受9級特大地震影響,放射性物質發(fā)生泄漏螃征。R本人自食惡果不足惜搪桂,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盯滚。 院中可真熱鬧锅棕,春花似錦、人聲如沸淌山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泼疑。三九已至德绿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背移稳。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工蕴纳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人个粱。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓古毛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親都许。 傳聞我的和親對象是個殘疾皇子稻薇,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • 一、概述 Semaphore(信號量) 是一個線程同步結構胶征,用于在線程間傳遞信號塞椎,以避免出現(xiàn)信號丟失,或者像鎖一樣...
    hu1991die閱讀 1,898評論 0 3
  • Semaphore是計數(shù)信號量睛低。Semaphore管理一系列許可證案狠。每個acquire方法阻塞,直到有一個許可證可...
    Java小生閱讀 637評論 0 0
  • Semaphore (信號量)是由計算機科學家Dijkstra在1965年提出的钱雷,廣泛應用不同的操作系統(tǒng)骂铁,在管程提...
    yes的練級攻略閱讀 411評論 0 0
  • 1:睡眠質量低呀!頭疼 2:第一次自己帶著兩個新人上班罩抗,小雷達已上線从铲,一晚上到處拆雷、接鍋澄暮,心累名段。 3:又是宵夜……
    一只表格怪閱讀 104評論 0 0
  • 今天在過十字路口的時候,前面一輛直行的車擋在了我要右轉的車道上泣懊。導致我過不去伸辟,只能等在后面。我倒也沒在意馍刮,這種事情...
    臥底1658閱讀 290評論 0 3