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

資訊專欄INFORMATION COLUMN

java并發(fā)編程學(xué)習(xí)之阻塞隊(duì)列

YJNldm / 2002人閱讀

摘要:是線程安全的存取隊(duì)列,繼承了。接口插入方法阻塞隊(duì)列滿了,拋出異常。如果隊(duì)列不為空,返回頭結(jié)點(diǎn)但不刪除,如果隊(duì)列為空,返回子類一個由數(shù)組結(jié)構(gòu)組成的有界阻塞隊(duì)列。一個由鏈表結(jié)構(gòu)組成的有界阻塞隊(duì)列。一個支持優(yōu)先級排序的無界阻塞隊(duì)列。

BlockingQueue

BlockingQueue是線程安全的存取隊(duì)列,繼承了Queue。

使用場景

消費(fèi)者生產(chǎn)者模式。

生產(chǎn)者,一直會往隊(duì)列里扔數(shù)據(jù),直到隊(duì)列滿了,開始阻塞,等待消費(fèi)者取數(shù)據(jù)。

消費(fèi)者,一直會從隊(duì)列里取數(shù)據(jù),直到隊(duì)列空了,開始阻塞,等待生產(chǎn)者扔數(shù)據(jù)。

接口

插入方法

add:阻塞隊(duì)列滿了,拋出IllegalStateException異常。成功返回true。

offer:插入成功,返回true,插入失敗,返回false。

put:阻塞隊(duì)列滿了,就等到,可被中斷,拋出InterruptedException異常

移除方法

remove:成功返回true,為空拋出NoSuchElementException異常

poll:如果隊(duì)列不為空,移除并返回頭結(jié)點(diǎn),如果隊(duì)列為空,返回null

take:如果隊(duì)列不為空,移除并返回頭結(jié)點(diǎn),如果隊(duì)列為空,則等待,可被中斷,拋出InterruptedException異常

檢查方法:

element:如果隊(duì)列不為空,返回頭結(jié)點(diǎn)但不刪除,如果隊(duì)列為空,拋出NoSuchElementException異常。

peek:如果隊(duì)列不為空,返回頭結(jié)點(diǎn)但不刪除,如果隊(duì)列為空,返回null

子類

ArrayBlockingQueue:一個由數(shù)組結(jié)構(gòu)組成的有界阻塞隊(duì)列。

LinkedBlockingQueue:一個由鏈表結(jié)構(gòu)組成的有界阻塞隊(duì)列。

PriorityBlockingQueue:一個支持優(yōu)先級排序的無界阻塞隊(duì)列。

DelayQueue:一個使用優(yōu)先級排序?qū)崿F(xiàn)的無界阻塞隊(duì)列。

SynchronousQueue:一個不存儲元素的阻塞隊(duì)列。

LinkedTransferQueue:一個由鏈表結(jié)構(gòu)組成的無界阻塞隊(duì)列。

LinkedBlockingDeque:一個由鏈表結(jié)構(gòu)組成的雙向阻塞隊(duì)列。

ArrayBlockingQueue

先進(jìn)先出,初始化必須給數(shù)組大小,只有一個鎖。

LinkedBlockingQueue

先進(jìn)先出,初始化沒有給鏈表帶下,默認(rèn)為Integer.MAX_VALUE,有兩個鎖。

PriorityBlockingQueue

可以直接通過Comparator或者Collection的Comparator進(jìn)行排序,一個鎖。

DelayQueue

DelayQueue中的對象必須實(shí)現(xiàn)Delayed接口,延時取元素。
使用場景:

訂單到期未付款,取消訂單

刪除過期的緩存

SynchronousQueue

因?yàn)椴淮鎯?shù)據(jù),所以每一次put,都要等待一個take。

LinkedTransferQueue

先進(jìn)先出,如果消費(fèi)者在等待接收元素,transfer方法把元素直接給消費(fèi)者,如果沒有,則放對隊(duì)列的尾節(jié)點(diǎn),并等到消費(fèi)結(jié)束后返回。tryTransfer無論消費(fèi)者是否消費(fèi),都直接返回。

LinkedBlockingDeque

頭部和尾部,都可以添加或移除元素。工作密取,就是用這個

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

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

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)之線程池-ThreadPoolExecutor(三)

    摘要:是所有線程池實(shí)現(xiàn)的父類,我們先看看構(gòu)造函數(shù)構(gòu)造參數(shù)線程核心數(shù)最大線程數(shù)線程空閑后,存活的時間,只有線程數(shù)大于的時候生效存活時間的單位任務(wù)的阻塞隊(duì)列創(chuàng)建線程的工程,給線程起名字當(dāng)線程池滿了,選擇新加入的任務(wù)應(yīng)該使用什么策略,比如拋異常丟棄當(dāng)前 ThreadPoolExecutor ThreadPoolExecutor是所有線程池實(shí)現(xiàn)的父類,我們先看看構(gòu)造函數(shù) 構(gòu)造參數(shù) corePool...

    阿羅 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之AQS

    摘要:原理全稱,當(dāng)線程去獲取資源的時候,會根據(jù)狀態(tài)值來判斷是否有鎖,如果有鎖,則加入到鏈表,鏈表里的線程,通過自旋,判斷資源是否已經(jīng)釋放,如果釋放,則獲取資源。 原理 全稱AbstractQueuedSynchronizer,當(dāng)線程去獲取資源的時候,會根據(jù)狀態(tài)值state來判斷是否有鎖,如果有鎖,則加入到鏈表,鏈表里的線程,通過自旋,判斷資源是否已經(jīng)釋放,如果釋放,則獲取資源。 AQS結(jié)構(gòu) ...

    Tikitoo 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之顯示鎖Lock

    摘要:顯示鎖和內(nèi)置鎖內(nèi)置鎖優(yōu)勢代碼簡潔不會因?yàn)闆]釋放鎖,導(dǎo)致鎖泄露。顯示鎖優(yōu)勢靈活性強(qiáng),鎖的獲取可以被中斷,可以嘗試獲取鎖。接口接口主要方法如下獲取鎖嘗試獲取鎖,表示未加鎖的情況。會進(jìn)行搶鎖操作,如果獲取不到鎖,也會進(jìn)入阻塞隊(duì)列等到喚醒。 顯示鎖和內(nèi)置鎖 內(nèi)置鎖(Synchronized)優(yōu)勢 代碼簡潔 不會因?yàn)闆]釋放鎖,導(dǎo)致鎖泄露。 顯示鎖(Lock)優(yōu)勢 靈活性強(qiáng),鎖的獲取可以被中...

    zone 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之ConcurrentHashMap(JDK1.7)

    摘要:之前中提過,并發(fā)的時候,可能造成死循環(huán),那么在多線程中可以用來避免這一情況。默認(rèn),當(dāng)容量大于時,開始擴(kuò)容并發(fā)數(shù),默認(rèn),直接影響和的值,以及的初始化數(shù)量。初始化的數(shù)量,為最接近且大于的辦等于的次方的值,比如,數(shù)量為,,數(shù)量為。 之前HashMap中提過,并發(fā)的時候,可能造成死循環(huán),那么在多線程中可以用ConcurrentHashMap來避免這一情況。 Segment Concurrent...

    piglei 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之Fork/Join 框架-基本概念(一)

    摘要:思想把大任務(wù)分割成多個小任務(wù),再把小任務(wù)的結(jié)果匯總,最終得到大任務(wù)的結(jié)果。當(dāng)一個線程執(zhí)行完當(dāng)前隊(duì)列的任務(wù)時,他就會去竊取其他隊(duì)列的任務(wù)來執(zhí)行。當(dāng)雙端隊(duì)列只有一個任務(wù)時,線程之間會競爭。 思想 把大任務(wù)分割成多個小任務(wù),再把小任務(wù)的結(jié)果匯總,最終得到大任務(wù)的結(jié)果。 步驟如下: 任務(wù)分割 結(jié)果匯總 示例圖 showImg(https://segmentfault.com/img/bVb...

    hikui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<