<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></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 国产99re在线观看只有精品| 日韩视频中文字幕精品偷拍| 国产精品永久免费视频| 久久久久久亚洲精品成人| 精品视频在线观看一区二区三区| 亚洲精品免费在线观看| 合区精品久久久中文字幕一区| 亚洲精品伊人久久久久| 国产在线精品网址你懂的| 苍井空亚洲精品AA片在线播放| 亚洲人成亚洲精品| 久久精品女人天堂AV麻| www亚洲精品久久久乳| 99久久er热在这里只有精品99| 久久激情亚洲精品无码?V| 精品久久久久久中文字幕无码| 日韩精品无码AV成人观看| 99久久精品费精品国产一区二区| 国产精品成人va在线观看入口| 91精品国产91久久久久| 国精无码欧精品亚洲一区| 午夜精品久久影院蜜桃| 精品区2区3区4区产品乱码9| 日韩精品无码AV成人观看| 97精品依人久久久大香线蕉97| 日韩在线精品一二三区| 国产精品99久久久久久人四虎| 久久国产热精品波多野结衣AV| 国产精品亚洲а∨无码播放 | 国产精品九九九久久九九| 免费91麻豆精品国产自产在线观看| 国产成人AV无码精品| 国内精品久久久久影院蜜芽| 国产成人精品第一区二区| 久久发布国产伦子伦精品| 久久精品7亚洲午夜a| 亚洲精品V欧洲精品V日韩精品 | 国产午夜精品一区二区| 香蕉99久久国产综合精品宅男自 | 99久久国语露脸精品国产| 亚洲精品乱码久久久久久蜜桃|