99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

如何解析Semaphore信號(hào)量

這篇文章給大家介紹如何解析Semaphore信號(hào)量 ,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東寧企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè),東寧網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

前幾天群里有網(wǎng)友問我信號(hào)量和線程池,我對(duì)信號(hào)量回答有些錯(cuò)誤,后面群里其他網(wǎng)友做了更正,今天由于時(shí)間緊張,我就簡單的在說一下信號(hào)量和線程池。

自從 jdk5.0 開始在 java.util.concurrent 包里提供了 Semaphore 的官方實(shí)現(xiàn),因此大家不需要自己去實(shí)現(xiàn) Semaphore。但是還是很有必要去熟悉如何使用 Semaphore 及其背后的原理。Semaphore(信號(hào)量)是一個(gè)線程同步結(jié)構(gòu),用于在線程間傳遞信號(hào),以避免出現(xiàn)信號(hào)丟失,或者像鎖一樣用于保護(hù)一個(gè)關(guān)鍵區(qū)域。

信號(hào)量和線程池的使用場(chǎng)景非常的廣泛,最簡單的就是 Hystirx 中提供了兩種模式執(zhí)行邏輯:信號(hào)量、線程池。所以對(duì)于 JUC 這套視頻,大家還是很有必要看一看的。

Semaphore 可以控制某個(gè)資源可被同時(shí)訪問的個(gè)數(shù),通過 acquire() 獲取一個(gè)許可,如果沒有就等待,而 release() 釋放一個(gè)許可。比如在 Windows 下可以設(shè)置共享文件的最大客戶端訪問個(gè)數(shù)。 

Semaphore 實(shí)現(xiàn)的功能就類似廁所有 5 個(gè)坑,假如有10個(gè)人要上廁所,那么同時(shí)只能有多少個(gè)人去上廁所呢?同時(shí)只能有5個(gè)人能夠占用,當(dāng) 5 個(gè)人中的任何一個(gè)人讓開后,其中等待的另外5個(gè)人中又有一個(gè)人可以占用了。另外等待的5個(gè)人中可以是隨機(jī)獲得優(yōu)先機(jī)會(huì),也可以是按照先來后到的順序獲得機(jī)會(huì),這取決于構(gòu)造 Semaphore 對(duì)象時(shí)傳入的參數(shù)選項(xiàng)。單個(gè)信號(hào)量的 Semaphore 對(duì)象可以實(shí)現(xiàn)互斥鎖的功能,并且可以是由一個(gè)線程獲得了“鎖”,再由另一個(gè)線程釋放“鎖”,這可應(yīng)用于死鎖恢復(fù)的一些場(chǎng)合。

Semaphore 維護(hù)了當(dāng)前訪問的個(gè)數(shù),提供同步機(jī)制,控制同時(shí)訪問的個(gè)數(shù)。在數(shù)據(jù)結(jié)構(gòu)中鏈表可以保存“無限”的節(jié)點(diǎn),用 Semaphore 可以實(shí)現(xiàn)有限大小的鏈表。另外重入鎖 ReentrantLock 也可以實(shí)現(xiàn)該功能,但實(shí)現(xiàn)上要復(fù)雜些。 

如何解析Semaphore信號(hào)量

如何解析Semaphore信號(hào)量

如何解析Semaphore信號(hào)量

acquire()這里我定義了 10 個(gè)人要上廁所,但是只有 5 個(gè)坑位,每個(gè)人消耗隨機(jī)的時(shí)間,直接運(yùn)行上面這段代碼,可以看到一開始進(jìn)去了 5 個(gè)人,后來就是陸陸續(xù)續(xù)的有人進(jìn),有人出了。但是正在使用的一定不會(huì)超過 5 個(gè)的。

acquire()      

如何解析Semaphore信號(hào)量

如果沒有可用的許可,則在發(fā)生以下兩種情況之一前,禁止將當(dāng)前線程用于線程安排目的并使其處于休眠狀態(tài):某些其他線程調(diào)用此信號(hào)量的 release()方法,并且當(dāng)前線程是下一個(gè)要被分配許可的線程;或者其他某些線程中斷當(dāng)前線程。從此信號(hào)量獲取一個(gè)許可,在提供一個(gè)許可前一直將線程阻塞,否則線程被中斷。獲取一個(gè)許可(如果提供了一個(gè))并立即返回,將可用的許可數(shù)減 1。

如果當(dāng)前線程:被此方法將其已中斷狀態(tài)設(shè)置為 on ;或者在等待許可時(shí)被中斷。則拋出 InterruptedException,并且清除當(dāng)前線程的已中斷狀態(tài)。 

release()      

如何解析Semaphore信號(hào)量

釋放一個(gè)許可,將其返回給信號(hào)量。釋放一個(gè)許可,將可用的許可數(shù)增加 1。如果任意線程試圖獲取許可,則選中一個(gè)線程并將剛剛釋放的許可給予它。然后針對(duì)線程安排目的啟用(或再啟用)該線程。
不要求釋放許可的線程必須通過調(diào)用 acquire() 來獲取許可。通過應(yīng)用程序中的編程約定來建立信號(hào)量的正確用法。

另外兩個(gè)不常用的方法,public int availablePermits()查看現(xiàn)在可用的信號(hào)量。public int drainPermits(),這個(gè)方法返回即可所有的許可數(shù)目,并將許可置 0。public Semaphore(int permits) 其中參數(shù)permits就是允許同時(shí)運(yùn)行的線程數(shù)目。

關(guān)于如何解析Semaphore信號(hào)量 就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:如何解析Semaphore信號(hào)量
網(wǎng)站路徑:http://www.yijiale78.com/article36/gdcspg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、品牌網(wǎng)站建設(shè)、外貿(mào)建站、建站公司網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)