亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

java Semaphore

stefanieliang / 3565人閱讀

摘要:它可以設(shè)定一個(gè)閾值,基于此,多個(gè)線程競(jìng)爭(zhēng)獲取許可信號(hào),做自己的申請(qǐng)后歸還,超過(guò)閾值后,線程申請(qǐng)?jiān)S可信號(hào)將會(huì)被阻塞。若該信號(hào)量保證在征用時(shí)按的順序授予許可,則為,否則為例子餐廳個(gè)座位,但是有個(gè)人要等位就餐等位中。。。第個(gè)人吃完了。。

Semaphore簡(jiǎn)介

Semaphore是一種基于計(jì)數(shù)的信號(hào)量。它可以設(shè)定一個(gè)閾值,基于此,多個(gè)線程競(jìng)爭(zhēng)獲取許可信號(hào),做自己的申請(qǐng)后歸還,超過(guò)閾值后,線程申請(qǐng)?jiān)S可信號(hào)將會(huì)被阻塞。Semaphore可以用來(lái)構(gòu)建一些對(duì)象池,資源池之類(lèi)的,比如數(shù)據(jù)庫(kù)連接池,我們也可以創(chuàng)建計(jì)數(shù)為1的Semaphore,將其作為一種類(lèi)似互斥鎖的機(jī)制,這也叫二元信號(hào)量,表示兩種互斥狀態(tài)。它的用法如下:
availablePermits函數(shù)用來(lái)獲取當(dāng)前可用的資源數(shù)量
wc.acquire(); //申請(qǐng)資源
wc.release();// 釋放資源

public Semaphore(int permits,boolean fair)
permits:初始化可用的許可數(shù)目。
fair: 若該信號(hào)量保證在征用時(shí)按FIFO的順序授予許可,則為true,否則為false;

例子

餐廳2個(gè)座位,但是有3個(gè)人要等位就餐

public class SemaphoreThread extends Thread {
    private String name;
    private Semaphore semaphore;

    public SemaphoreThread(String name, Semaphore semaphore) {
        this.name = name;
        this.semaphore = semaphore;
    }

    @Override
    public void run() {
        if (semaphore.availablePermits() <= 0) {
            System.out.println(name + "等位中。。。");
        }
        try {
            semaphore.acquire();
            System.out.println(name + "開(kāi)始就餐了。。");
            Thread.sleep(new Random().nextInt(1000));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(name + "吃完了。。");
        semaphore.release();
    }
}

請(qǐng)求:

@RequestMapping("test-semaphore")
    public void testSemaphore() {
        Semaphore semaphore = new Semaphore(2);
        for (int i = 1; i <= 3; i++) {
            new SemaphoreThread("第" + i + "個(gè)人", semaphore).start();
        }
    }

結(jié)果:
第1個(gè)人開(kāi)始就餐了。。
第2個(gè)人開(kāi)始就餐了。。
第3個(gè)人等位中。。。
第1個(gè)人吃完了。。
第3個(gè)人開(kāi)始就餐了。。
第2個(gè)人吃完了。。
第3個(gè)人吃完了。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/74710.html

相關(guān)文章

  • Java多線程工具箱之Semaphore

    摘要:多線程工具箱之前言這一篇談一下信號(hào)量。信息信息信息信息信息信息信息信息信息信息信息小結(jié)適用于多線程請(qǐng)求數(shù)量資源的場(chǎng)景,但無(wú)法解決單多個(gè)線程對(duì)同一資源訪問(wèn)的競(jìng)爭(zhēng)性訪問(wèn)。在后面我們?cè)谖覀兊亩嗑€程工具箱里面陸續(xù)會(huì)提到。 Java多線程工具箱之Semaphore 前言 這一篇談一下Semaphore:信號(hào)量。 將Semaphore類(lèi)比為為信號(hào)燈,被繼承Runable的線程類(lèi)比為列車(chē):理解信號(hào)量...

    FleyX 評(píng)論0 收藏0
  • Java多線程進(jìn)階(二十)—— J.U.C之synchronizer框架:Semaphore

    摘要:當(dāng)線程使用完共享資源后,可以歸還許可,以供其它需要的線程使用。所以,并不會(huì)阻塞調(diào)用線程。立即減少指定數(shù)目的可用許可數(shù)。方法用于將可用許可數(shù)清零,并返回清零前的許可數(shù)六的類(lèi)接口聲明類(lèi)聲明構(gòu)造器接口聲明 showImg(https://segmentfault.com/img/bVbfdnC?w=1920&h=1200); 本文首發(fā)于一世流云的專(zhuān)欄:https://segmentfault...

    boredream 評(píng)論0 收藏0
  • 長(zhǎng)文慎入-探索Java并發(fā)編程與高并發(fā)解決方案

    摘要:所有示例代碼請(qǐng)見(jiàn)下載于基本概念并發(fā)同時(shí)擁有兩個(gè)或者多個(gè)線程,如果程序在單核處理器上運(yùn)行多個(gè)線程將交替地?fù)Q入或者換出內(nèi)存這些線程是同時(shí)存在的,每個(gè)線程都處于執(zhí)行過(guò)程中的某個(gè)狀態(tài),如果運(yùn)行在多核處理器上此時(shí),程序中的每個(gè)線程都 所有示例代碼,請(qǐng)見(jiàn)/下載于 https://github.com/Wasabi1234... showImg(https://upload-images.jians...

    SimpleTriangle 評(píng)論0 收藏0
  • java多線程信號(hào)量-semaphore

    摘要:年月日上午阿里云消息服,隊(duì)列消息發(fā)送以及消費(fèi)的并發(fā)測(cè)試解析配置文件二者等價(jià)線程數(shù)并發(fā)數(shù)程序入口準(zhǔn)備工作發(fā)送消息線程池一個(gè)計(jì)數(shù)信號(hào)量。但是,不使用實(shí)際的許可對(duì)象,只對(duì)可用許可的號(hào)碼進(jìn)行計(jì)數(shù),并采取相應(yīng)的行動(dòng)。 package com.study.mq.aliyunmns; import java.io.BufferedInputStream; import java.io.FileIn...

    zzbo 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之Semaphore

    摘要:作用信號(hào)量,限制同一時(shí)間,訪問(wèn)特定資源的線程數(shù)量,以保證合理的使用特定資源。主要方法獲取鎖,如果沒(méi)有獲取到,就堵塞釋放鎖示例運(yùn)行結(jié)果如下可以看出,每次執(zhí)行都是個(gè)。如果把和注釋掉,可以看的結(jié)果如下同一時(shí)間,都打印到了控制臺(tái)。 作用 信號(hào)量,限制同一時(shí)間,訪問(wèn)特定資源的線程數(shù)量,以保證合理的使用特定資源。 主要方法 acquire:獲取鎖,如果沒(méi)有獲取到,就堵塞 release:釋放鎖 ...

    岳光 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<