概念
? ? ? ? 在操作系統(tǒng)中也經(jīng)常出現(xiàn)信號(hào)量這一概念
? ? ? ? Semaphore是并發(fā)編程中一個(gè)重要的概念/組件
? ? ? ? 準(zhǔn)確來(lái)說,Semaphore是一個(gè)計(jì)數(shù)器(變量),描述了”可用資源的個(gè)數(shù)“,描述的是,當(dāng)前線程是否有”臨界資源可用“
? ? ? ? 臨界資源表示,多個(gè)線程/進(jìn)程等并發(fā)執(zhí)行的實(shí)體可以公共使用到的資源(多個(gè)線程修改同一個(gè)變量,這個(gè)變量可以認(rèn)為是臨界資源)
代碼實(shí)現(xiàn)
????????
package 信號(hào)量semaphore;
import java.util.concurrent.Semaphore;
/**
* Created with IntelliJ IDEA.
* Description:
* User: wuyulin
* Date: 2023-08-04
* Time: 16:32
*/
//Semaphore是并發(fā)編程中一個(gè)重要的概念/組件
//準(zhǔn)確來(lái)說Semaphore是一個(gè)計(jì)數(shù)器,描述了可用資源的個(gè)數(shù)
//描述了當(dāng)前這個(gè)線程是否有臨界資源可以使用
//臨界資源,多個(gè)線程/進(jìn)程等并發(fā)執(zhí)行的實(shí)體可以公共使用到的資源(多個(gè)線程可以修改同一個(gè)變量,這個(gè)變量就可以認(rèn)為是臨界資源)
public class Demo1 {
public static void main(String[] args) throws InterruptedException {
Semaphore semaphore=new Semaphore(4); //參數(shù)表示初始可用資源的個(gè)數(shù)
semaphore.acquire();
System.out.println("獲取資源");
semaphore.acquire();
System.out.println("獲取資源");
semaphore.acquire();
System.out.println("獲取資源");
semaphore.acquire();
System.out.println("獲取資源");
semaphore.release();
System.out.println("釋放資源");
semaphore.acquire();
System.out.println("獲取資源");
//一個(gè)就4個(gè)可用資源,在獲取完了以后,再次進(jìn)行獲取要進(jìn)入阻塞等待,等待資源被釋放后才能獲取
semaphore.acquire();
System.out.println("獲取資源");
}
}
? ? ? ? 1.Semaphore的使用并不困難,實(shí)例化Semaphore對(duì)象中寫入的參數(shù)表示初始可用資源的個(gè)數(shù)
? ? ? ? 2.調(diào)用acquire方法來(lái)獲取資源,此時(shí)Semaphore中用于計(jì)數(shù)的屬性就減一
? ? ? ? 3.調(diào)用release方法釋放資源,此時(shí)Semaphore中用于計(jì)數(shù)的屬性就加一文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-624195.html
? ? ? ? 4.當(dāng)Semaphore中用于計(jì)數(shù)的屬性為0表示沒有資源可以利用,此時(shí)再調(diào)用acquire方法來(lái)獲取資源,就會(huì)進(jìn)入阻塞等待,直到有資源了以后再去獲取資源繼續(xù)向下執(zhí)行文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-624195.html
到了這里,關(guān)于信號(hào)量Semaphore的概念及其使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!