日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java中Semaphore的使用方法

本篇內(nèi)容主要講解“Java中Semaphore的使用方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Java中Semaphore的使用方法”吧!

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)利川,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

Semaphore的作用是控制線程的并發(fā)數(shù)量。在簡單點(diǎn)的解釋就是如果我們開始了10個(gè)線程都在處理任務(wù),如果我們用到的Semaphore,那么可以讓這10個(gè)并發(fā)任務(wù)執(zhí)行的時(shí)候可以只同時(shí)執(zhí)行2個(gè)。因?yàn)镾emaphore的構(gòu)造方法里需要傳遞一個(gè)int類型的參數(shù),這個(gè)參數(shù)就是控制線程可以允許的同時(shí)并發(fā)數(shù)。

Java中Semaphore的使用方法

Java中Semaphore的使用方法

Java中Semaphore的使用方法

上述代碼我們同時(shí)開啟了3個(gè)線程,因?yàn)槲覀儧]有加同步方法所以這3個(gè)開啟的線程是異步執(zhí)行的。那么在實(shí)際的任務(wù)開發(fā)中,如果我們需要控制多線程的并發(fā)數(shù)量應(yīng)該怎么辦呢?例如我們在操作IO的時(shí)候可能會(huì)因?yàn)橄到y(tǒng)的內(nèi)存或者磁盤等因素,導(dǎo)致我們的CPU占有率很高,這時(shí)我們就要調(diào)整線程的同時(shí)并發(fā)數(shù),否則系統(tǒng)可能會(huì)卡死。這時(shí)我們就會(huì)用到Semaphore。它的使用方法也比較簡單,當(dāng)調(diào)用acquire()方法時(shí),就是會(huì)獲取由Semaphore頒發(fā)的許可證,當(dāng)調(diào)用release()方法時(shí)就會(huì)把獲取的許可證歸還。Semaphore中的許可證數(shù)量是由創(chuàng)建Semaphore對象的構(gòu)造方法的參數(shù)決定的。參數(shù)值是多少,就有多少個(gè)許可證,有多少個(gè)許可證,就可以同時(shí)有多少個(gè)線程并發(fā)執(zhí)行,因?yàn)闆]有獲得許可證的線程則不會(huì)執(zhí)行。

Java中Semaphore的使用方法

Java中Semaphore的使用方法

我們看輸出雖然我們開啟了3個(gè)線程,但同時(shí)執(zhí)行的線程任務(wù)只有2個(gè),原因就是我們設(shè)置的Semaphore構(gòu)造函數(shù)的參數(shù)為2。也就是說同時(shí)執(zhí)行的任務(wù)只能是2個(gè),如果有一個(gè)線程的任務(wù)已經(jīng)執(zhí)行完了,那么另一個(gè)線程才會(huì)執(zhí)行。原因是上一個(gè)線程已經(jīng)將許可證歸還了,當(dāng)前線程可以重新獲取到許可證了。

到此,相信大家對“Java中Semaphore的使用方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:Java中Semaphore的使用方法
本文網(wǎng)址:http://www.dlmjj.cn/article/gehdii.html