java 先入先出,java_阻塞隊列(FIFO先進先出)

java_阻塞隊列(FIFO先進先出)

d962e260e12244304f2ea5265b497501.png

ArrayBlockingQueue:由數組結構組成的有界阻塞隊列;

LinkedBlockingQueue:由鏈表結構組成的有界阻塞隊列(但大小默認值為:Integer.MAX_VALUE);

PriorityBlockingQueue:支持優先級排序的***阻塞隊列;

DelayQueue:使用優先級隊列實現的延遲***阻塞隊列;

SynchronousQueue:不存儲元素的阻塞隊列,也即單個元素的隊列;

LinkedTransferQueue:由鏈表結構組成的***阻塞隊列;

LinkedBlockingDeque:由鏈表結果組成的雙向阻塞隊列;

bc724b70422491208944f3f89618a7e0.png

72e29dc45b34e94ae34dd328e1d23746.png

dee9adc9870d478b42a793de643b39e1.png

阻塞隊列核心方法

41ec45496eb737c45b30455afd5de42d.png

f13b59133c0fefa0c1ef79ba764d1d97.png

add(e):為阻塞隊列添加一個元素e,添加成功返回 true,當阻塞隊列滿時,拋出異常 java.lang.IllegalStateException: Queue full

remove():為阻塞隊列移除一個元素,移除成功時返回移除的元素,當阻塞隊列為空時,拋出異常?java.util.NoSuchElementException

element():檢查當前阻塞隊列的首個元素,成功時返回首個元素,當阻塞隊列為空時,拋出異常?java.util.NoSuchElementException

offer(e):為阻塞隊列添加一個元素e,添加成功返回 true,當阻塞隊列滿時返回?false

poll():為阻塞隊列移除一個元素,移除成功時返回移除的元素,當阻塞隊列為空時,返回 null

peek():檢查當前阻塞隊列的首個元素,成功時返回首個元素,當阻塞隊列為空時,返回 null

put(e):為阻塞隊列添加一個元素e,無返回值,當阻塞隊列滿時會阻塞線程,直到操作成功為止

take():為阻塞隊列移除一個元素,成功時返回首個元素,當阻塞隊列為空時會阻塞線程,直到操作成功為止

offer(e,time,unit):為阻塞隊列添加一個元素e,添加成功返回?true,當阻塞隊列滿時會阻塞隊列一段時間(time:long類型的時間,unit為時間單位),失敗返回?false

poll(time,unit):為阻塞隊列移除一個元素,移除成功時返回移除的元素,當阻塞隊列為空時,會阻塞隊列一段時間(time:long類型的時間,unit為時間單位),失敗返回??null

SynchronousQueue:不存儲元素的阻塞隊列

8600b95749fc26c5e46d7a632cd0005a.pngpublic?class?SynchronousQueueDemo?{public?static?void?main(String[]?args)?{

BlockingQueue?queue?=?new?SynchronousQueue<>();new?Thread(()?->{try?{

System.out.println(Thread.currentThread().getName()+"\t?put?1");

queue.put(1);

System.out.println(Thread.currentThread().getName()+"\t?put?2");

queue.put(2);

System.out.println(Thread.currentThread().getName()+"\t?put?3");

queue.put(3);

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

},"A").start();new?Thread(()?->{try?{try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

},"B").start();

}

}

168cbea806627f4ebbf2119aabe8dc32.png

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

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

相關文章

PHP能在Mac上運行嗎,PHP Composer無法在Mac上運行

我安裝了bitnami mac堆棧主要是因為我的項目需要至少PHP 5.4.7版本.但是,我遇到了作曲家的問題.這是我跑步時遇到的錯誤&#xff1a;php composer.phar install --dev錯誤&#xff1a;Richard-Knops-MacBook-Pro:my-project richardknop$php composer.phar install --devdyld: …

主機安裝php網站,php支持虛擬主機(php網站空間)

php設置虛擬主機&#xff0c;主要是為了在ie輸入地址欄是&#xff0c;可以輸入任意的&#xff0c;而不是localhost/&#xff0c;為了方便&#xff0c;但是設置起來很不方便的。。發現不能實現每個站點使用不同的PHP版本&#xff0c;想向大家求教一下&#xff0c;有沒有能讓。支…

php時分獲取秒數,javascript與php時/分/秒與秒數互轉

javascript&#xff1a;/*時間轉換成秒*/function time_to_second(time){var arr time.split(‘:‘)var hour arr[0]?arr[0]:0var minute arr[1]?arr[1]:0var second arr[2]?arr[2]:0var ret hour * 3600 minute * 60 secondreturn ret}/*秒轉換成時間*/function sec…

lbp matlab程序,求教大神給解釋一下LBP特征提取每部分程序是干什么的

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓function X1 LBP(Resimage)% Returns a rotation invariant LBP (uniform patterns) histogram (10 bins)% of picture X.% the size of picture X must be at least 3x3 pixelsw1 (1/sqrt(2))^2;%根號1/2平方w2 (1-1/sqrt(2))*…

python以20字符寬居中輸出,Python 字符串內置方法(一)

以下方法只需要知道用法就行了&#xff0c;權當了解&#xff0c;不用硬背&#xff0c;以后需要用到的時候再回來看說明&#xff1a;一般方法中前面是is開頭的就是判斷來的&#xff0c;輸出不是True就是False&#xff0c;例如isalpha()方法capitalize()方法&#xff1a;首字母大…

php 復選框全選和取消,基于JavaScript實現復選框的全選和取消全選

這篇文章主要為大家詳細介紹了基于JavaScript實現復選框的全選和取消全選&#xff0c;具有一定的參考價值&#xff0c;感興趣的小伙伴們可以參考一下本文實例為大家分享了js復選框的全選和取消全選的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下效果圖&#xff1a;…

oracle 字段全大寫,Oracle如何批量將表中字段名全轉換為大寫(利用簡單存儲過程)...

前言今天查詢一個數據字段一直提示字符無效&#xff0c;明明在數據庫表字段中是存在的&#xff1b;查詢后得知&#xff0c;數據庫表字段為小寫時&#xff0c;查詢需要將字段名小寫并加上雙引號&#xff1b;表名同理&#xff0c;我這里表名是大寫&#xff0c;暫時不需要改。搜到…

oracle的al32utf8,oracle字符集修改(AL32UTF8-UTF8)

author&#xff1a;skatetime&#xff1a;2012/04/10AL32UTF8->UTF8步驟shutdown immediate;startup mount;alter session set sql_tracetrue;alter system enable restricted session;alter system set job_queue_processes0;alter system set aq_tm_processes0;alter data…

javascript date php date,JavaScript Date 知識淺析

Date函數new Date()Date 對象會自動把當前日期和時間保存為其初始值。date.getDate()從 Date 對象返回一個月中的某一天 (1 ~ 31)。date.getDay()從 Date 對象返回一周中的某一天 (0 ~ 6)。周日是0。date.getMonth()從 Date 對象返回月份 (0 ~ 11)。date.getFullYear()從 Date …

16字節 oracle md5,Oracle中的MD5加密

因為要用到MD5加密&#xff0c;所以在網上搜了一下相關資料&#xff0c;并進行仔細研究。其核心就是MD5編碼的數據包函數&#xff1a;DBMS_OBFUSCATION_TOOLKIT.M因為要用到MD5加密&#xff0c;所以在網上搜了一下相關資料&#xff0c;并進行仔細研究。其核心就是MD5編碼的數據…

ip字符串轉換 linux,Linux網絡編程入門

在日常使用&#xff0c;我們更多的使用十進制字符串表示IP地址&#xff0c;比如192.169.130.66&#xff0c;而不是記憶32位的IP地址(關鍵是太長了記不住呀)&#xff0c;使用字符串IP更為方便&#xff0c;可讀性也更好。但是根據上述in_addr定義&#xff0c;網絡編程中需要的是網…

linux php目錄是否存在,PHP判斷文件或者目錄是否可寫,兼容windows/linux系統

在PHP中&#xff0c;可用is_writable()函數來判斷一個 文件/目錄 是否可寫&#xff0c;用是否可生成文件的方式判斷目錄是否可寫&#xff1b;網上的一些代碼大多數能判斷linux系統&#xff0c;但windows服務器下判斷不準確。下面的代碼兼容windows和linux判斷文件或目錄是否可寫…

linux 腳本 發送郵件,shell 腳本發送郵件

有時候會使用腳本完成一系列的自動化工作&#xff0c;工作完成后還需要郵件通知相關人員&#xff0c;此時可以使用第三方的工具&#xff1a;SendEmail,最新版本sendEmail-v1.56.tar.gz下載地址&#xff1a;http://caspian.dotconf.net/menu/Software/SendEmail/sendEmil的使用范…

link linux 跨設備,Linux中的兩種link方式

Linux系統中包括兩種鏈接方式&#xff1a;硬鏈接(hard link)和符號鏈接(symbolic link)&#xff0c;其中符合鏈接就是所謂的軟鏈接(soft link)&#xff0c;那么兩者之間到底有什么區別呢&#xff1f;inode在Linux系統中&#xff0c;內核為每一個新創建的文件分配一個inode&…

linux 運行ca.crt,linux下使用openssl生成 csr crt CA證書,opensslcsr

linux下使用openssl生成 csr crt CA證書&#xff0c;opensslcsr本文主要借鑒和引用了下面2個地址的內容&#xff0c;然后在自己的機器上進行了測試和執行&#xff0c;并做了如下記錄。ref:http://blog.chinaunix.net/uid-26760055-id-3128132.htmlhttp://www.111cn.net/sys/lin…

linux cpu核數和線程數,cpu個數、核數和線程的理解

1.查看物理cpu個數grep physical id /proc/cpuinfo | sort -u | wc -l2.查看核心數量grep core id /proc/cpuinfo | sort -u | wc -l3.查看線程數grep processor /proc/cpuinfo | sort -u | wc -lcat /proc/cpuinfo 查看文件里面關鍵信息processor : 23 ----------代表…

linux設置超鏈接,幫助-鏈接 - Linux Kernel Newbies

this page is outdated and needs to be fixed參考鏈接形式語法備注內部鏈接WikiNameCamelCase page name內部自由鏈接["Page"] or ["free link"]可配置函數內部子頁面鏈接/SubPage or ["/Sub page"]相對于上一級頁面外部鏈接http://example.net…

linux 文件系統cache,終于找到一篇詳解Linux文件系統Cache的文章

級別&#xff1a; 初級2006 年 5 月 11 日文件 Cache 管理是 Linux 內核中一個很重要并且較難理解的組成部分。本文詳細介紹了 Linux內核中文件 Cache 管理的各個方面&#xff0c;希望能夠對開發者理解相關代碼有所幫助。自從誕生以來&#xff0c;Linux 就被不斷完善和普及&…

寶塔Linux怎么安裝Mariadb,如何在linux上面安裝mariadb總結

1、下載MariaDB(mariadb-5.5.31.tar.gz)[rootzabbix_server opt]# wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz2、安裝MariaDB[rootzabbix_server opt]# tar xzvf mariadb-5.5.31.tar.gz[rootzabbix_server cmake-2.8.5]# cd cmake-2.8.5[rootzabbix_server cmak…

c語言數碼管加法程序怎么寫,拜托大神寫數碼管與矩陣鍵盤結合設計簡易計算器C語言的程序...

我和你用的是一樣的&#xff0c;給你一個我買板子送的矩陣程序//4*4鍵盤檢測程序,按下鍵后相應的代碼顯示在數碼管上#includesbit beepP2^3;sbit dulaP2^6;sbit welaP2^7;unsigned char i100;unsigned char j,k,temp,key;void delay(unsigned char i){for(ji;j>0;j--)for(k1…