鏈表類型的無界阻塞隊列-LinkedBlockingQueue

一:LinkedBlockingQueue介紹

1:LinkedBlockingQueue是一個基于鏈表實現的阻塞隊列,默認情況下,該阻塞隊列的大小為Integer.MAX_VALUE,由于這個數值特別大,所以 LinkedBlockingQueue 也被稱作無界隊列,代表它幾乎沒有界限,隊列可以隨著元素的添加而動態增長,但是如果沒有剩余內存,則隊列將拋出OOM錯誤。所以為了避免隊列過大造成機器負載或者內存爆滿的情況出現,我們在使用的時候建議手動傳一個隊列的大小。
2:LinkedBlockingQueue內部由單鏈表實現,只能從head取元素,從tail添加元素。LinkedBlockingQueue采用兩把鎖的鎖分離技術實現入隊出隊互不阻塞,添加元素和獲取元素都有獨立的鎖,也就是說LinkedBlockingQueue是讀寫分離的,讀寫操作可以并行執行。

二:LinkedBlockingQueue使用

//指定隊列的大小創建有界隊列
LinkedBlockingQueue<Integer> linkedBlockingQueue = new LinkedBlockingQueue<>(100);
//無界隊列
LinkedBlockingQueue<Integer> linkedBlockingQueue = new LinkedBlockingQueue<>();//拿無界隊列舉例操作一些方法
LinkedBlockingQueue<Integer> linkedBlockingQueue = new LinkedBlockingQueue<>();//add() 里面本質也是用的offer()新增的元素linkedBlockingQueue.add(1);linkedBlockingQueue.offer(211);linkedBlockingQueue.add(5);Arrays.stream(linkedBlockingQueue.toArray()).forEach(a->{System.out.println("LinkedBlockingQueue toArray foreach:"+a);});/*** LinkedBlockingQueue toArray foreach:1* LinkedBlockingQueue toArray foreach:211* LinkedBlockingQueue toArray foreach:5*///從頭部獲得存放時間最長的元素Integer peek1 = linkedBlockingQueue.peek();System.out.println("LinkedBlockingQueue peek:"+peek1);//LinkedBlockingQueue peek:1//判斷元素是否存在boolean contains = linkedBlockingQueue.contains(211);System.out.println("LinkedBlockingQueue contains:"+contains);//LinkedBlockingQueue contains:true//從頭部取出存放時間最長的元素Integer poll1 = linkedBlockingQueue.poll();System.out.println("LinkedBlockingQueue poll:"+poll1);//LinkedBlockingQueue poll:1Arrays.stream(linkedBlockingQueue.toArray()).forEach(a->{System.out.println("LinkedBlockingQueue poll后 toArray foreach:"+a);});/*** LinkedBlockingQueue poll后 toArray foreach:211* LinkedBlockingQueue poll后 toArray foreach:5*///FIFO 刪除頭部最早進去的元素Integer remove = linkedBlockingQueue.remove();System.out.println("LinkedBlockingQueue remove:"+remove);//LinkedBlockingQueue remove:211//FIFO 添加元素頭部先增最新進入的元素,尾部最遲的元素try {

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15273.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能體之斯坦福AI小鎮(Generative Agents: Interactive Simulacra of Human Behavior)

相關代碼地址見文末 論文地址&#xff1a;Generative Agents: Interactive Simulacra of Human Behavior | Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology 1.概述 論文提出了一種多個智能體進行協同&#xff0c;進而模擬可信的人…

Python燃氣輪機汽車鋼棒整流電路控制圖統計模型過程潛力分析

&#x1f3af;要點 &#x1f3af;活塞模擬器&#xff1a;&#x1f58a;控制圖過程能力分析&#xff1a;Cp 對過程提供在規格上限和下限內的輸出的潛力度量&#xff0c;Cpk中心過程能力指數&#xff0c;Cpl估計僅包含規格下限過程能力&#xff0c;Cpu估計僅包含規格上限過程能力…

Linux系統下Mysql忘記密碼怎么解決

一、對Mysql配置文件進行設置 1、找到/etc/mysql/my.cnf路徑下&#xff0c;用Vi命令編輯my.cnf配置文件&#xff0c;命令如下&#xff1a; # 以管理員身份登錄 sudo su # 輸入管理員密碼 # 登錄成功后&#xff0c;找到Mysql的配置文件-->Mysql配置文件默認在此 cd /etc/my…

善用KEGG數據庫挖掘目的基因

有關KEGG的分析在很多已發表的論文中都十分常見&#xff0c;涉及到的方向也很廣泛&#xff0c;比如&#xff1a;代謝組、表觀組、轉錄組等等。通常得到相關的基因集或者代謝物后&#xff0c;我們都希望能夠快速了解它們的蛋白功能和涉及的調控機制&#xff0c;從而進一步鎖定接…

NetSuite Intercompany COGS科目設置問題

在22年底的NetSuite多公司功能串講中&#xff0c;有一個題目是Intercompany COGS科目的設置問題。近期在項目上這個問題被密集討論。為了方便分享&#xff0c;所以在此摘出來獨立成文。有興趣的同學也可以翻看之前的視頻。 NetSuite知識會 第8談 多公司功能串講 NetSuite Inter…

圖論(從數據結構的三要素出發)

文章目錄 邏輯結構物理結構鄰接矩陣定義性能分析性質存在的問題 鄰接表定義性能分析存在的問題 十字鏈表(有向圖)定義性能分析 鄰接多重表(無向圖)定義性能分析 數據的操作圖的基本操作圖的遍歷廣度優先遍歷&#xff08;BFS&#xff09;算法思想和實現性能分析深度優先最小生成…

WORD、PPT技巧

WORD技巧 編輯設置 word標題導航窗口怎么調出word2016&#xff0c;縮小了頁面&#xff0c;可是怎么是豎著的一頁一頁排列啊&#xff1f;以前不是好幾頁橫排著的么&#xff1f;怎么設置&#xff0c;求救&#xff1a;在Word標題欄那一行找到“視圖”&#xff0c;點擊“顯示比例…

20212416 2023-2024-2 《移動平臺開發與實踐》第5次作業

百度地圖應用 1.實驗內容2.實驗過程2.1 Android Studio配置2.1. 創建一個Android項目2.2 在項目中本地集成BaiduMap SDK 2.2 編寫代碼2.2.1 配置AndroidManifest.xml文件2.2.2 編寫UI界面布局文件2.2.3 編寫主函數代碼2.2.4 運行結果 3.學習中遇到的問題及解決4.學習感悟與思考…

向量數據庫的使用

向量數據庫 向量數據庫是一種專門用于存儲、管理和查詢高維向量數據的數據庫系統。隨著人工智能和機器學習的廣泛應用&#xff0c;向量數據庫在處理非結構化數據&#xff08;如文本、圖像、音頻和視頻等&#xff09;的任務中變得越來越重要。本文將介紹快速使用Chroma 安裝 …

Pyqt5中獲取按鈕的值

使用Sender()函數 // An highlighted block class MyWindow(QWidget):def __init__(self):super(MyWindow, self).__init__()self.setui()# #def calculate(self):button self.sender()print("button:{}".format(button.text()))def setui(self):data [["7&…

Nginx將https重定向為http進行訪問的配置(附Demo)

目錄 前言1. Demo2. 彩蛋前言 對應nginx的基本知識推薦閱讀: Nginx配置靜態網頁訪問(圖文界面)Nginx從入門到精通(全)java框架 零基礎從入門到精通的學習路線 附開源項目面經等(超全)由于網站默認無配置https,但輸入網址的時候瀏覽器默認帶https,導致網頁一直無法訪問…

Spring的依賴注入

Date public class Student{public String name ;public String[] array ;public Grade grade;public List list;public Set set;public Map map;public Properties prop;//使用IOC默認使用無參構造器創建對象&#xff0c;沒有無參構造器會報錯 // public Student(Strin…

數據結構篇其三---鏈表分類和雙向鏈表

? 前言 數據結構篇其二實現了一個簡單的單鏈表&#xff0c;鏈表的概念&#xff0c;單鏈表具體實現已經說明&#xff0c;如下&#xff1a; 單鏈表 事實上&#xff0c;前面的單鏈表本質上是無頭單向不循環鏈表。此篇說明的雙向鏈表可以說完全反過來了了。無論是之前的單鏈表還…

Java進階學習筆記12——final、常量

final關鍵字&#xff1a; final是最終的意思。可以修飾類、方法、變量。 修飾類&#xff1a;該類就被稱為最終類&#xff0c;特點是不能被繼承了。 修飾方法&#xff1a;該方法是最終方法&#xff0c;特點是不能被重寫了。 修飾變量&#xff1a;該變量只能被賦值一次。 有些…

智慧校園的建設思路

智慧校園建設的一個主要目的就是要打破學校內的信息孤島&#xff0c;其核心是在人、流程和信息三個層面的全面整合。智慧校園應該能夠為全校師生員工及校外用戶提供統一的、一站式的服務渠道&#xff1b;能夠將學校各種業務流程連接起來&#xff0c;實現各種應用系統的互聯互通…

postgresql insert on conflict 不存在則插入,存在則更新

向一張表執行插入動作&#xff0c;如果插入的字段數據已存在&#xff0c;則執行更新操作&#xff0c;不存在則進行插入操作。 1、創建一張表 CREATE TABLE "user_info" ( "id" int2 NOT NULL, "name" varchar(20) COLLATE "pg_catalog&quo…

基于Tensorflow卷積神經網絡人臉識別公寓人員進出管理系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 隨著科技的快速發展和智能化水平的提高&#xff0c;公寓管理面臨著越來越多的挑戰。傳統的公寓…

Go語言標準庫之log和三方庫zap

一、Log 1.1 logger基本使用 Go語言內置的log包實現了簡單的日志服務。本包也提供了一個預定義的“標準”logger&#xff0c;可以通過調用函數Print系列(Print|Printf|Println)、Fatal系列&#xff08;Fatal|Fatalf|Fatalln)、和Panic系列&#xff08;Panic|Panicf|Panicln)來…

C++ 數據結構算法 學習筆記(32) -五大排序算法

C 數據結構算法 學習筆記(32) -五大排序算法 選擇算法 如下若有多個女生的身高需要做排序: 常規思維: 第一步先找出所有候選美女中身高最高的&#xff0c;與最后一個數交換 第二步再找出除最后一位美女外其它美女中的最高者&#xff0c;與倒數第二個美女交換位置 再找出除最…

k8s-pod詳解

一、Pod基本概念&#xff1a; 1.pod介紹&#xff1a; Pod是kubernetes中最小的資源管理組件&#xff0c;Pod也是最小化運行容器化應用的資源對象。一個Pod代表著集群中運行的一個進程。kubernetes中其他大多數組件都是圍繞著Pod來進行支撐和擴展Pod功能的&#xff0c;例如&am…