国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java知識點(diǎn)總結(jié)(Java容器-Queue)

hedzr / 1508人閱讀

摘要:知識點(diǎn)總結(jié)容器知識點(diǎn)總結(jié)容器接口與是在同一級別,都是繼承了接口。另一種隊(duì)列則是雙端隊(duì)列,支持在頭尾兩端插入和移除元素,主要包括。一個(gè)由鏈表結(jié)構(gòu)組成的無界阻塞隊(duì)列。是一個(gè)阻塞的線程安全的隊(duì)列,底層實(shí)現(xiàn)也是使用鏈?zhǔn)浇Y(jié)構(gòu)。

Java知識點(diǎn)總結(jié)(Java容器-Queue)

@(Java知識點(diǎn)總結(jié))[Java, Java容器]

Queue

Queue接口與List、Set是在同一級別,都是繼承了Collection接口。LinkedList接口實(shí)現(xiàn)了Queue接口。Queue接口收縮了對LinkedList的方法訪問權(quán)限(也就是方法參數(shù)如果是Queue,那就只能方法Queue接口定義的方法),讓方法能夠正確的使用。

隊(duì)列

隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),它有兩個(gè)基本操作:在隊(duì)列尾部添加一個(gè)元素,和在隊(duì)列頭部移除一個(gè)元素。也就是說,隊(duì)列以一種先進(jìn)先出(FIFO)的方式操作數(shù)據(jù)。
隊(duì)列,它主要分為兩大類,一類是阻塞式隊(duì)列,隊(duì)列滿了以后再插入元素則會(huì)拋出異常,主要包括ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue。另一種隊(duì)列則是雙端隊(duì)列,支持在頭、尾兩端插入和移除元素,主要包括:ArrayDeque、LinkedBlockingDeque、LinkedList。

隊(duì)列方法
方法 功能 異常處理
add 增加一個(gè)元索 如果隊(duì)列已滿,則拋出一個(gè)IIIegaISlabEepeplian異常
remove 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
element 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
offer 添加一個(gè)元素并返回true 如果隊(duì)列已滿,則返回false
poll 移除并返問隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
peek 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
put 添加一個(gè)元素 如果隊(duì)列滿,則阻塞
take 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則阻塞

拋出異常:是指當(dāng)阻塞隊(duì)列滿時(shí)候,再往隊(duì)列里插入元素,會(huì)拋出IllegalStateException(“Queue full”)異常。當(dāng)隊(duì)列為空時(shí),從隊(duì)列里獲取元素時(shí)會(huì)拋出NoSuchElementException異常 。

返回特殊值:插入方法會(huì)返回是否成功,成功則返回true。移除方法,則是從隊(duì)列里拿出一個(gè)元素,如果沒有則返回null

一直阻塞:當(dāng)阻塞隊(duì)列滿時(shí),如果生產(chǎn)者線程往隊(duì)列里put元素,隊(duì)列會(huì)一直阻塞生產(chǎn)者線程,直到拿到數(shù)據(jù),或者響應(yīng)* 中斷退出。當(dāng)隊(duì)列空時(shí),消費(fèi)者線程試圖從隊(duì)列里take元素,隊(duì)列也會(huì)阻塞消費(fèi)者線程,直到隊(duì)列可用。

超時(shí)退出:當(dāng)阻塞隊(duì)列滿時(shí),隊(duì)列會(huì)阻塞生產(chǎn)者線程一段時(shí)間,如果超過一定的時(shí)間,生產(chǎn)者線程就會(huì)退出。

阻塞隊(duì)列

ArrayBlockingQueue :一個(gè)由數(shù)組結(jié)構(gòu)組成的有界阻塞隊(duì)列。
LinkedBlockingQueue :一個(gè)由鏈表結(jié)構(gòu)組成的有界阻塞隊(duì)列。
PriorityBlockingQueue :一個(gè)支持優(yōu)先級排序的無界阻塞隊(duì)列。
DelayQueue:一個(gè)使用優(yōu)先級隊(duì)列實(shí)現(xiàn)的無界阻塞隊(duì)列。
SynchronousQueue:一個(gè)不存儲元素的阻塞隊(duì)列。
LinkedTransferQueue:一個(gè)由鏈表結(jié)構(gòu)組成的無界阻塞隊(duì)列。
LinkedBlockingDeque:一個(gè)由鏈表結(jié)構(gòu)組成的雙向阻塞隊(duì)列。

非阻塞隊(duì)列

ConcurrentLinkedQueue :基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列

Queue的使用
/**
 * 隊(duì)列測試:實(shí)現(xiàn)類使用LinkedList
 * 
 * Queue也有很多其他的實(shí)現(xiàn)類,比如java.util.concurrent.LinkedBlockingQueue。
 * LinkedBlockingQueue是一個(gè)阻塞的線程安全的隊(duì)列,底層實(shí)現(xiàn)也是使用鏈?zhǔn)浇Y(jié)構(gòu)。
 */
public class TestQuene {

    // 定義一個(gè)隊(duì)列
    Queue queue;

    @Before
    public void before() {
        // 實(shí)例化隊(duì)列變量
        queue = new LinkedList();

        // add方法向隊(duì)列中添加元素,返回布爾值,add方法添加失敗時(shí)會(huì)拋異常,不推薦使用
        // queue.add("1");
        // queue.add("2");
        // queue.add("3");
        // queue.add("4");
        // queue.add("5");

        // offer方法向隊(duì)列中添加元素,返回布爾值
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        queue.offer("d");
        queue.offer("e");

    }

    // poll方法移除隊(duì)列首個(gè)元素并返回,若隊(duì)列為空,返回null
    @Test
    public void test1() {
        // 彈出元素
        String pollEle = queue.poll(); // 先進(jìn)先出,彈出了a
        System.out.println(pollEle); // a
        System.out.println(queue); // [b, c, d, e]
    }

    // remove方法移除首個(gè)元素并返回,若隊(duì)列為空,會(huì)拋出異常:NoSuchElementException,不推薦使用
    @Test
    public void test2() {
        // 彈出元素
        String remove = queue.remove(); // 先進(jìn)先出,彈出了a
        System.out.println(remove); // a
        System.out.println(queue); // [b, c, d, e]
    }

    // peek方法返回隊(duì)列首個(gè)元素,但不移除,若隊(duì)列為空,返回null
    @Test
    public void test3() {
        // 查看首個(gè)元素
        String peek = queue.peek(); // 首個(gè)元素是a,最先加入
        System.out.println(peek); // a
        System.out.println(queue); // [a, b, c, d, e]
    }

    // element方法返回隊(duì)列的頭元素,但不移除,若隊(duì)列為空,會(huì)拋出異常:NoSuchElementException,不推薦使用
    @Test
    public void test4() {
        // 查看首個(gè)元素
        String element = queue.element();
        System.out.println(element); // a
        System.out.println(queue); // [a, b, c, d, e]
    }

}

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71420.html

相關(guān)文章

  • Week 2 - Java 容器 - 詳細(xì)剖析 List 之 ArrayList, Vector,

    摘要:底層使用的是雙向鏈表數(shù)據(jù)結(jié)構(gòu)之前為循環(huán)鏈表,取消了循環(huán)。快速隨機(jī)訪問就是通過元素的序號快速獲取元素對象對應(yīng)于方法。而接口就是用來標(biāo)識該類支持快速隨機(jī)訪問。僅僅是起標(biāo)識作用。,中文名為雙端隊(duì)列。不同的是,是線程安全的,內(nèi)部使用了進(jìn)行同步。 前言 學(xué)習(xí)情況記錄 時(shí)間:week 2 SMART子目標(biāo) :Java 容器 記錄在學(xué)習(xí)Java容器 知識點(diǎn)中,關(guān)于List的需要重點(diǎn)記錄的知識點(diǎn)。...

    MartinDai 評論0 收藏0
  • 通俗易懂,JDK 并發(fā)容器總結(jié)

    摘要:線程安全的線程安全的,在讀多寫少的場合性能非常好,遠(yuǎn)遠(yuǎn)好于高效的并發(fā)隊(duì)列,使用鏈表實(shí)現(xiàn)。這樣帶來的好處是在高并發(fā)的情況下,你會(huì)需要一個(gè)全局鎖來保證整個(gè)平衡樹的線程安全。 該文已加入開源項(xiàng)目:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項(xiàng)目,Star 數(shù)接近 14 k)。地址:https://github.com/Snailclimb... 一 JDK ...

    curlyCheng 評論0 收藏0
  • Java 基礎(chǔ) | Collection 集合概覽

    摘要:說到復(fù)盤基礎(chǔ),并不是所有的都會(huì)復(fù)盤,沒那個(gè)時(shí)間更沒那個(gè)必要。比如,一些基礎(chǔ)的語法以及條件語句,極度簡單。思前想后,我覺得整個(gè)計(jì)劃應(yīng)該從集合開始,而復(fù)盤的方式就是讀源碼。通常,隊(duì)列不允許隨機(jī)訪問隊(duì)列中的元素。 ?showImg(https://segmentfault.com/img/remote/1460000020029737?w=1080&h=711); 老讀者都知道,我是自學(xué)轉(zhuǎn)行...

    codergarden 評論0 收藏0
  • [Java并發(fā)-11] 并發(fā)容器的使用

    摘要:同步容器及其注意事項(xiàng)中的容器主要可以分為四個(gè)大類,分別是和,但并不是所有的容器都是線程安全的。并發(fā)容器及其注意事項(xiàng)在版本之前所謂的線程安全的容器,主要指的就是同步容器,當(dāng)然因?yàn)樗蟹椒ǘ加脕肀WC互斥,串行度太高了,性能太差了。 Java 并發(fā)包有很大一部分內(nèi)容都是關(guān)于并發(fā)容器的,因此學(xué)習(xí)和搞懂這部分的內(nèi)容很有必要。 Java 1.5 之前提供的同步容器雖然也能保證線程安全,但是性能很差...

    legendaryedu 評論0 收藏0
  • JMS 在 SpringBoot 中的使用

    摘要:本文主要講述消息服務(wù)在中的使用。所以需要一個(gè)監(jiān)聽容器工廠的概念,即接口,它會(huì)引用上面創(chuàng)建好的與的連接工廠,由它來負(fù)責(zé)接收消息以及將消息分發(fā)給指定的監(jiān)聽器。為了消費(fèi)消息,訂閱者必須保持運(yùn)行的狀態(tài)。 JMS 在 SpringBoot 中的使用 摘要:本文屬于原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請保留出處:https://github.com/jasonGeng88/blog> 本文所有服務(wù)均采用doc...

    Michael_Ding 評論0 收藏0

發(fā)表評論

0條評論

hedzr

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<