- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- Java常用工具類(lèi)總結
什么是控制并發(fā)流程?
控制并發(fā)流程的工具類(lèi),作用就是幫助我們程序員更容易得讓線(xiàn)程之間合作讓線(xiàn)程之間相互配合,來(lái)滿(mǎn)足業(yè)務(wù)邏輯比如讓線(xiàn)程A等待線(xiàn)程B執行完畢后再執行等合作策略
倒數門(mén):
例子:購物拼團;大巴,人滿(mǎn)才會(huì )發(fā)車(chē)
流程:倒數結束之前,一直處于等待狀態(tài),直到倒計時(shí)結束,此線(xiàn)程才繼續工作。
開(kāi)始 -> 進(jìn)入等待 -> 倒數結束 -> 繼續工作
類(lèi)的主要方法介紹:
CountDownLatch(int count):僅有一個(gè)構造函數,參數count為需要倒數的數值
await():調用await()方法的線(xiàn)程會(huì )被掛起,他會(huì )等待直到count值為0才繼續執行。
countDown():將count值減1,直到為0時(shí),等待的線(xiàn)程才會(huì )被喚起。
圖解await和countDown方法:
構造方式代碼:
注意點(diǎn):
擴展用法:多個(gè)線(xiàn)程等多個(gè)線(xiàn)程執行完成后,再同時(shí)執行
CountDownLatch是不能夠重用的,如果需要重新計數,可以考慮使用CyclicBarrier或者創(chuàng )建新的CountDownLatch實(shí)例
Semaphore可以用來(lái)限制或管理數量有限的資源的使用情況信號量的作用是維護一個(gè)許可證的計數,線(xiàn)程可以獲取許可證,那信號量剩余的許可證就加一,當信號量所擁有的許可證數量為0,name下一個(gè)還想要獲取許可證的線(xiàn)程,就需要等待,知道另外別的線(xiàn)程釋放了許可證
信號量用法:
初始化Semaphore并指定許可證數量
在需要被線(xiàn)程在的代碼前加acquire()或者acquireUninterruptibly()方法
在任務(wù)執行結束后,調用release()來(lái)釋放許可證
信號量主要方法介紹:
構造方式代碼:
注意點(diǎn):
獲取和釋放的許可證數量必須一致否則比如每次都獲取2個(gè),但是只釋放1個(gè),隨著(zhù)時(shí)間的推移,到最后許可證數量不夠用,會(huì )導致程序科四。
注意在初始化Semaphore的時(shí)候設置公平性,一般設置為true更合理。
并不是必須由獲取許可證的線(xiàn)程釋放那個(gè)許可證,事實(shí)上,獲取和釋放許可證對線(xiàn)程并無(wú)要求,也許是A獲取了,然后由B釋放,只要邏輯合理即可
信號量的作用,處理控制臨界區最多同時(shí)有N個(gè)線(xiàn)程訪(fǎng)問(wèn)外,另一個(gè)作用是可以實(shí)現“條件等待”,例如線(xiàn)程1需要線(xiàn)程2完成準備工作后才能開(kāi)始執行,那么就線(xiàn)程1acquire,而線(xiàn)程2執行之后release,這樣的話(huà),相當于是輕量級的CountDownLatch
Condition作用
signalAll()和signal()區別
構造方式代碼:
注意點(diǎn):
CyclicBarrier循環(huán)柵欄
代碼演示:
到此這篇關(guān)于Java常用工具類(lèi)總結的文章就介紹到這了,更多相關(guān)Java工具類(lèi)內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站