<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內(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 久久伊人精品青青草原日本| 精品剧情v国产在免费线观看| 国产成人无码精品一区在线观看| 成人精品视频一区二区三区 | 精品少妇人妻av无码久久| 亚洲乱码日产精品a级毛片久久| 99精品国产免费久久久久久下载| 亚洲国产午夜中文字幕精品黄网站 | 亚洲国产精品无码久久98 | 卡一卡2卡3卡精品网站| 亚洲国产成人久久精品app| 一本一本久久A久久综合精品| 2022国产精品不卡a| 熟妇无码乱子成人精品| 99热在线日韩精品免费| 精品91自产拍在线| 亚洲精品国产成人99久久| 久久久久亚洲精品无码网址 | 亚洲精品无码乱码成人| 国产成人精品曰本亚洲79ren| 国产精品久久免费视频| 精品久久久久久久久亚洲偷窥女厕 | 精品国产一区二区二三区在线观看| 国产高清在线精品一区| 久久久久成人精品无码中文字幕 | 95在线观看精品视频| 99久久精品美女高潮喷水| 国产精品久久久久久久午夜片| 国内久久精品视频| 精品国产精品国产| 国精品午夜福利视频不卡757| 无码少妇精品一区二区免费动态| 亚洲精品国产字幕久久不卡| CAOPORN国产精品免费视频| 亚洲AV成人精品日韩一区18p| 久久精品人妻中文系列| 538精品在线观看| 最新国产精品拍自在线观看| 国产精品二区在线| 日本精品久久久久护士| 国产精品久久久久鬼色|