阻塞佇列 LinkedBlockingQueue

2021-09-07 05:07:23 字數 517 閱讀 9241

什麼叫執行緒安全?

執行緒安全就是每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的。

執行緒安全就是說多執行緒訪問同一**,不會產生不確定的結果。

並行和併發區別

1、並行是指兩者同時執行一件事,比如賽跑,兩個人都在不停的往前跑;

2、併發是指資源有限的情況下,兩者交替輪流使用資源,比如一段路(單核cpu資源)同時只能過乙個人,a走一段後,讓給b,b用完繼續給a,交替使用,目的是提高效率。

linkedblockingqueue是乙個執行緒安全的阻塞佇列,實現了先進先出等特性,是作為生產者消費者的首選,可以指定容量,也可以不指定,不指定的話預設最大是integer.max_value,其中主要用到put和take方法,put方法將乙個物件放到佇列尾部,在佇列滿的時候會阻塞直到有佇列成員被消費,take方法從head取乙個物件,在隊列為空的時候會阻塞,直到有佇列成員被放進來。

常用方法如下:

等待佇列 阻塞非阻塞

阻塞 裝置驅動不阻塞,使用者想獲取裝置資源只能不停的查詢,這無謂的消耗cpu資源。而阻塞訪問,不能獲取資源的程序將進入休眠,它將cpu資源 禮讓 給其他程序 喚醒程序的地方最大可能發生在中斷裡面,因為硬體資源獲得的同時往往伴隨著乙個中斷 定義頭 wait queue head t queue 初始化...

阻塞佇列BlockingQueue

例介紹乙個特殊的佇列 blockingqueue,如果blockingqueue是空的,從blockingqueue取東西的操作將會被阻斷進入等待狀態,直到blockingqueue進了東西才會被喚醒,同樣,如果blockingqueue是滿的,任何試圖往裡存東西的操作也會被阻斷進入等待狀態,直到b...

12 阻塞佇列

非阻塞佇列 priorityqueue linkedlist linkedlist 是雙向鍊錶,它實現了 dequeue 介面 阻塞佇列 1 arrayblockingqueue 基於陣列實現的乙個阻塞佇列,在建立arrayblockingqueue 物件時必須制定容量大小。並且可以指定公平性與非公...