<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 爽爽精品dvd蜜桃成熟时电影院| 日韩精品人成在线播放| 人人鲁人人莫人人爱精品| 久久精品国产99久久久| 色久综合网精品一区二区| 久久久久久噜噜精品免费直播| 精品日韩二区三区精品视频| 亚洲午夜久久久精品电影院| 亚洲AV无码久久精品蜜桃| 九色精品视频在线观看| 国产精品va在线观看无| 亚洲国产成人精品无码区二本 | 亚洲精品蜜桃久久久久久| 国产伦精品一区二区三区四区 | 亚洲人精品亚洲人成在线| 亚洲国产精品成人久久 | 久久精品亚洲一区二区| 久久精品综合一区二区三区| 国产精品无码一区二区三区在| 呦交小u女国产精品视频| 91精品国产麻豆国产自产在线| 久久99九九99九九精品| 日韩一级精品视频在线观看| 国内精品国语自产拍在线观看 | 91在线老王精品免费播放| 久久久影院亚洲精品| 久久91精品国产91久久户| 国产一区二区三区在线观看精品| 国产精品男男视频一区二区三区| 国产午夜福利久久精品| 国产成人久久精品麻豆二区 | 亚洲男人的天堂久久精品| 久久精品中文闷骚内射| 99国产精品热久久久久久| 久久99蜜桃精品久久久久小说| 久久99精品国产麻豆宅宅| 亚洲精品乱码久久久久久按摩| 亚洲线精品一区二区三区| 国产在线国偷精品免费看| 中文字幕久精品免费视频| 国产亚洲精品a在线无码|