佇列面試分析

2021-10-24 15:52:56 字數 579 閱讀 6374

arrayblockingqueue 是乙個有邊界的阻塞佇列,它的內部實現是乙個陣列。它的容量是有限的,我們必須在其初始化的時候指定它的容量大小,容量大小一旦指定,其大小不可改變。其內部的阻塞方式是通過重入鎖 reenterlock 和 condition 條件佇列實現的,但是佇列中的鎖是沒有分離的,即新增操作和移除操作採用的同乙個reenterlock鎖,這樣就會導致入隊和出隊操作不能同時進行。

linkedblockingqueue採用的是一種基於單鏈表實現的阻塞式無界佇列。此佇列在新增乙個元素時會建立乙個新的node物件。刪除乙個元素時要移除乙個節點物件。頻發的建立和銷毀可能對gc操作有較大影響。但是,此佇列中的鎖(lock)是分離的,其新增操作採用的是putlock,移除操作採用的則是takelock,這樣能大大提高佇列的吞吐量,也意味著在高併發的情況下生產者和消費者可以並行地操作佇列中的資料,以此來提高整個佇列的併發效能。

concurrentlinkedqueue是乙個基於單鏈表實現的、執行緒安全的、非阻塞式無界佇列。此佇列的設計也非常考驗設計功底,其內部全程使用了cas操作,並且在邊界控制方面也引入了哨兵機制。總之,設計複雜程度遠遠高於直接使用鎖(lock)物件方式的執行緒安全佇列的實現。

工作佇列分析

一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...

螺旋佇列演算法分析

螺旋佇列的樣子如下圖 兩大規律 1。螺旋規律 紅線 2。奇數平方規律 紫線 問題描述 設1的座標是 0,0 的方向向右為正,y方向向下為正,例如,7的座標為 1,1 2的座標為 0,1 程式設計實現輸入任意一點座標 x,y 輸出所對應的數字!問題解決 從紫線突破。從圖中不難發現,右上角vc 2 t ...

工作佇列分析

一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...