隊列:第一章:阻塞隊列
理論:
阻塞隊列與普通隊列的區(qū)別在于,當(dāng)隊列是空的時,從隊列中獲取元素的操作將會被阻塞,或者當(dāng)隊列是滿時,往隊列里添加元素的操作會被阻塞。試圖從空的阻塞隊列中獲取元素的線程將會被阻塞,直到其他的線程往空的隊列插入新的元素。同樣,試圖往已滿的阻塞隊列中添加新元素的線程同樣也會被阻塞,直到其他的線程使隊列重新變得空閑起來,如從隊列中移除一個或者多個元素,或者完全清空隊列,下圖展示了如何通過阻塞隊列來合作:
線程1往阻塞隊列中添加元素,而線程2從阻塞隊列中移除元素
常用的隊列主要有以下兩種:
(當(dāng)然通過不同的實現(xiàn)方式,還可以延伸出很多不同類型的隊列,DelayQueue就是其中的一種)
先進先出(FIFO):先插入的隊列的元素也最先出隊列,類似于排隊的功能。從某種程度上來說這種隊列也體現(xiàn)了一種公平性。
后進先出(LIFO):后插入隊列的元素最先出隊列,這種隊列優(yōu)先處理最近發(fā)生的事件。
好處:
接口結(jié)構(gòu)和實現(xiàn)類: