<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 久久精品a一国产成人免费网站| 亚洲精品无码精品mV在线观看| 91精品日韩人妻无码久久不卡| 国产乱码伦精品一区二区三区麻豆| 69国产成人综合久久精品| 久久国产精品视频一区| 三上悠亚精品二区在线观看| 国产精品亚洲一区二区三区在线观看| 91国内揄拍国内精品情侣对白 | 99热这里只有精品7| 久久99精品九九九久久婷婷| 国产成人综合精品| 久久精品视频在线看99| 国产精品jizz在线观看直播| 久久久久女人精品毛片| 日本一区二区三区精品中文字幕| 精品精品国产高清a毛片| 麻豆人妻少妇精品无码专区| 国产精品亚洲专区无码牛牛| 99久久国产热无码精品免费| 91亚洲精品自在在线观看| 少妇人妻偷人精品免费视频| 亚洲爆乳精品无码一区二区三区| 国内精品视频在线观看| 精品久久人人做人人爽综合 | 日韩精品久久一区二区三区| 久久久一本精品99久久精品36| 精品成人乱色一区二区| 精品日产卡一卡二卡麻豆| 久久精品亚洲一区二区三区浴池| 日韩精品无码一区二区三区| 久久免费视频精品| 久久精品乱子伦免费| 久久精品国产亚洲| 久久亚洲AV无码精品色午夜麻 | 热re久久精品国产99热| 成人无号精品一区二区三区| 麻豆亚洲AV成人无码久久精品| 成人精品一区二区不卡视频| 日本精品αv中文字幕| 国产精品午夜高清在线观看|