国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java Semaphore

stefanieliang / 3510人閱讀

摘要:它可以設(shè)定一個閾值,基于此,多個線程競爭獲取許可信號,做自己的申請后歸還,超過閾值后,線程申請許可信號將會被阻塞。若該信號量保證在征用時按的順序授予許可,則為,否則為例子餐廳個座位,但是有個人要等位就餐等位中。。。第個人吃完了。。

Semaphore簡介

Semaphore是一種基于計數(shù)的信號量。它可以設(shè)定一個閾值,基于此,多個線程競爭獲取許可信號,做自己的申請后歸還,超過閾值后,線程申請許可信號將會被阻塞。Semaphore可以用來構(gòu)建一些對象池,資源池之類的,比如數(shù)據(jù)庫連接池,我們也可以創(chuàng)建計數(shù)為1的Semaphore,將其作為一種類似互斥鎖的機制,這也叫二元信號量,表示兩種互斥狀態(tài)。它的用法如下:
availablePermits函數(shù)用來獲取當(dāng)前可用的資源數(shù)量
wc.acquire(); //申請資源
wc.release();// 釋放資源

public Semaphore(int permits,boolean fair)
permits:初始化可用的許可數(shù)目。
fair: 若該信號量保證在征用時按FIFO的順序授予許可,則為true,否則為false;

例子

餐廳2個座位,但是有3個人要等位就餐

public class SemaphoreThread extends Thread {
    private String name;
    private Semaphore semaphore;

    public SemaphoreThread(String name, Semaphore semaphore) {
        this.name = name;
        this.semaphore = semaphore;
    }

    @Override
    public void run() {
        if (semaphore.availablePermits() <= 0) {
            System.out.println(name + "等位中。。。");
        }
        try {
            semaphore.acquire();
            System.out.println(name + "開始就餐了。。");
            Thread.sleep(new Random().nextInt(1000));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(name + "吃完了。。");
        semaphore.release();
    }
}

請求:

@RequestMapping("test-semaphore")
    public void testSemaphore() {
        Semaphore semaphore = new Semaphore(2);
        for (int i = 1; i <= 3; i++) {
            new SemaphoreThread("第" + i + "個人", semaphore).start();
        }
    }

結(jié)果:
第1個人開始就餐了。。
第2個人開始就餐了。。
第3個人等位中。。。
第1個人吃完了。。
第3個人開始就餐了。。
第2個人吃完了。。
第3個人吃完了。。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74710.html

相關(guān)文章

  • Java多線程工具箱之Semaphore

    摘要:多線程工具箱之前言這一篇談一下信號量。信息信息信息信息信息信息信息信息信息信息信息小結(jié)適用于多線程請求數(shù)量資源的場景,但無法解決單多個線程對同一資源訪問的競爭性訪問。在后面我們在我們的多線程工具箱里面陸續(xù)會提到。 Java多線程工具箱之Semaphore 前言 這一篇談一下Semaphore:信號量。 將Semaphore類比為為信號燈,被繼承Runable的線程類比為列車:理解信號量...

    FleyX 評論0 收藏0
  • Java多線程進階(二十)—— J.U.C之synchronizer框架:Semaphore

    摘要:當(dāng)線程使用完共享資源后,可以歸還許可,以供其它需要的線程使用。所以,并不會阻塞調(diào)用線程。立即減少指定數(shù)目的可用許可數(shù)。方法用于將可用許可數(shù)清零,并返回清零前的許可數(shù)六的類接口聲明類聲明構(gòu)造器接口聲明 showImg(https://segmentfault.com/img/bVbfdnC?w=1920&h=1200); 本文首發(fā)于一世流云的專欄:https://segmentfault...

    boredream 評論0 收藏0
  • 長文慎入-探索Java并發(fā)編程與高并發(fā)解決方案

    摘要:所有示例代碼請見下載于基本概念并發(fā)同時擁有兩個或者多個線程,如果程序在單核處理器上運行多個線程將交替地?fù)Q入或者換出內(nèi)存這些線程是同時存在的,每個線程都處于執(zhí)行過程中的某個狀態(tài),如果運行在多核處理器上此時,程序中的每個線程都 所有示例代碼,請見/下載于 https://github.com/Wasabi1234... showImg(https://upload-images.jians...

    SimpleTriangle 評論0 收藏0
  • java多線程信號量-semaphore

    摘要:年月日上午阿里云消息服,隊列消息發(fā)送以及消費的并發(fā)測試解析配置文件二者等價線程數(shù)并發(fā)數(shù)程序入口準(zhǔn)備工作發(fā)送消息線程池一個計數(shù)信號量。但是,不使用實際的許可對象,只對可用許可的號碼進行計數(shù),并采取相應(yīng)的行動。 package com.study.mq.aliyunmns; import java.io.BufferedInputStream; import java.io.FileIn...

    zzbo 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之Semaphore

    摘要:作用信號量,限制同一時間,訪問特定資源的線程數(shù)量,以保證合理的使用特定資源。主要方法獲取鎖,如果沒有獲取到,就堵塞釋放鎖示例運行結(jié)果如下可以看出,每次執(zhí)行都是個。如果把和注釋掉,可以看的結(jié)果如下同一時間,都打印到了控制臺。 作用 信號量,限制同一時間,訪問特定資源的線程數(shù)量,以保證合理的使用特定資源。 主要方法 acquire:獲取鎖,如果沒有獲取到,就堵塞 release:釋放鎖 ...

    岳光 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<