<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號(hào)
    視頻號(hào)

    抖音
    抖音

    快手
    快手

    微博
    微博

    java semaphore

    文檔

    java semaphore

    java semaphore是java程序中的一種鎖機(jī)制,叫做信號(hào)量。相關(guān)的方法有:1、void acquire();2、boolean tryAcquire();3、boolean tryAcquire(int permits, long timeout, TimeUnit unit);4、int availablePermits()。
    推薦度:
    導(dǎo)讀java semaphore是java程序中的一種鎖機(jī)制,叫做信號(hào)量。相關(guān)的方法有:1、void acquire();2、boolean tryAcquire();3、boolean tryAcquire(int permits, long timeout, TimeUnit unit);4、int availablePermits()。

    ? ?

    java semaphore是什么?讓我們一起來(lái)了解一下吧!

    java semaphore是java程序中的一種鎖機(jī)制,叫做信號(hào)量。它的作用是操縱并且訪問(wèn)特定資源的線程數(shù)量,允許規(guī)定數(shù)量的多個(gè)線程同時(shí)擁有一個(gè)信號(hào)量。

    相關(guān)的方法有以下幾個(gè):

    1.void acquire() :從信號(hào)量獲取一個(gè)允許,若是無(wú)可用許可前將會(huì)一直阻塞等待

    2.?boolean tryAcquire():從信號(hào)量嘗試獲取一個(gè)許可,如果無(wú)可用許可,直接返回false,不會(huì)阻塞

    3.?boolean tryAcquire(int permits, long timeout, TimeUnit unit):

    在指定的時(shí)間內(nèi)嘗試從信號(hào)量中獲取許可,如果在指定的時(shí)間內(nèi)獲取成功,返回true,否則返回false

    4.int availablePermits(): 獲取當(dāng)前信號(hào)量可用的許可

    semaphore構(gòu)造函數(shù):

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

    實(shí)戰(zhàn)舉例,具體步驟如下:

    public?static?void?main(String[]?args)?{
    ?
    ????????//允許最大的登錄數(shù)
    ????????int?slots=10;
    ????????ExecutorService?executorService?=?Executors.newFixedThreadPool(slots);
    ????????LoginQueueUsingSemaphore?loginQueue?=?new?LoginQueueUsingSemaphore(slots);
    ????????//線程池模擬登錄
    ????????for?(int?i?=?1;?i?{
    ?????????????????if?(loginQueue.tryLogin()){
    ?????????????????????System.out.println("用戶:"+num+"登錄成功!");
    ?????????????????}else?{
    ?????????????????????System.out.println("用戶:"+num+"登錄失敗!");
    ?????????????????}
    ????????????});
    ????????}
    ????????executorService.shutdown();
    ?
    ?
    ????????System.out.println("當(dāng)前可用許可證數(shù):"+loginQueue.availableSlots());
    ?
    ????????//此時(shí)已經(jīng)登錄了10個(gè)用戶,再次登錄的時(shí)候會(huì)返回false
    ????????if?(loginQueue.tryLogin()){
    ????????????System.out.println("登錄成功!");
    ????????}else?{
    ????????????System.out.println("系統(tǒng)登錄用戶已滿,登錄失敗!");
    ????????}
    ????????//有用戶退出登錄
    ????????loginQueue.logout();
    ?
    ????????//再次登錄
    ????????if?(loginQueue.tryLogin()){
    ????????????System.out.println("登錄成功!");
    ????????}else?{
    ????????????System.out.println("系統(tǒng)登錄用戶已滿,登錄失敗!");
    ????????}
    ??}
    class?LoginQueueUsingSemaphore{
    ?
    ????private?Semaphore?semaphore;
    ?
    ????/**
    ?????*
    ?????*?@param?slotLimit
    ?????*/
    ????public?LoginQueueUsingSemaphore(int?slotLimit){
    ????????semaphore=new?Semaphore(slotLimit);
    ????}
    ?
    ????boolean?tryLogin()?{
    ????????//獲取一個(gè)憑證
    ????????return?semaphore.tryAcquire();
    ????}
    ?
    ????void?logout()?{
    ????????semaphore.release();
    ????}
    ?
    ????int?availableSlots()?{
    ????????return?semaphore.availablePermits();
    ????}
    }

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java semaphore

    java semaphore是java程序中的一種鎖機(jī)制,叫做信號(hào)量。相關(guān)的方法有:1、void acquire();2、boolean tryAcquire();3、boolean tryAcquire(int permits, long timeout, TimeUnit unit);4、int availablePermits()。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    java separator java sequence java serializable java serializable接口 java serialversionuid java setlayout java platform java settimeout java plug-in java sftp java plugin java pojo java portal java sha256加密 java shuffle java simhash java simpledateformat java sizeof java sm3加密 文章千古事得失寸心知是誰(shuí)的名句 java selenium java selector java script java sandbox java rxjava java runtime.exec java runnable java rtp java rsa私鑰加密 java rsa公鑰加密 java pipeline java ping java phoenix java paypal java path java rsa加密 java rotate java reverse java reverse() java retrofit
    Top 国产精品国产三级国产普通话| 国产精品熟女高潮视频| 精品人妻无码一区二区三区蜜桃一| 久久久国产精品亚洲一区| 精品一区二区在线观看| 久久久精品国产亚洲成人满18免费网站 | 久久久久久久久毛片精品| 538prom精品视频我们不只是| 国产精品九九久久免费视频| 青青草97国产精品免费观看| 国产精品va无码免费麻豆| 国产精品综合在线| 国产精品第100页| 国产精品乱码在线观看| 成人久久伊人精品伊人| 国产精品成人va在线播放 | 精品日产一区二区三区手机| 国产自偷亚洲精品页65页 | 精品久久久久久久免费加勒比 | 久久久久久国产精品mv| 久久国产精品久久精| 久久免费观看国产99精品| 久久99久久99精品免观看| 少妇伦子伦精品无码STYLES| 日产精品久久久一区二区| 久久久精品国产sm调教网站 | 亚洲午夜国产精品| 日韩精品一区二区三区老鸭窝 | 国内少妇偷人精品视频免费 | 国产精品成人精品久久久| 久久夜色精品国产噜噜麻豆| 日韩精品视频免费观看| 成人区人妻精品一区二区不卡| 2022久久国产精品免费热麻豆| 99re国产精品| 久久精品视频观看| 精品人妻中文字幕有码在线| 67194国产精品免费观看| 99精品众筹模特私拍在线| 国产精品福利在线| 国产精品麻豆欧美日韩WW|