生活随笔
收集整理的這篇文章主要介紹了
LInkedBlockingQueue队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LInkedBlockingQueue
也稱為無界隊列
基于鏈表的阻塞隊列
內部維持著一個數據緩沖隊列
該隊列由一個鏈表構成
之所以能夠高效的處理并發數據
因為,內部實現采用分離鎖,讀寫分離兩個鎖
從而,實現生產者、消費者操作的完全并行運行
package
com.bjsxt.base.coll013import java
.util.ArrayList
import java
.util.List
import java
.util.concurrent.ArrayBlockingQueue
import java
.util.concurrent.ConcurrentLinkedQueue
import java
.util.concurrent.LinkedBlockingQueue
import java
.util.concurrent.SynchronousQueue
import java
.util.concurrent.TimeUnitimport javax
.swing.text.html.HTMLDocument.Iteratorpublic class UseQueue {public static void main(String[] args) throws Exception {// 阻塞隊列LinkedBlockingQueue<String> q = new LinkedBlockingQueue<String>()q
.offer(
"a")q
.offer(
"b")q
.offer(
"c")q
.offer(
"d")q
.offer(
"e")q
.add(
"f")System
.out.println(q
.size())for (java
.util.Iterator<String> iterator = q
.iterator()String string = (String) iterator
.next()System
.out.println(string)}}
}
運行
drainTo()
批量的獲取隊列中的元素
添加到集合中
package
com.bjsxt.base.coll013import java
.util.ArrayList
import java
.util.List
import java
.util.concurrent.ArrayBlockingQueue
import java
.util.concurrent.ConcurrentLinkedQueue
import java
.util.concurrent.LinkedBlockingQueue
import java
.util.concurrent.SynchronousQueue
import java
.util.concurrent.TimeUnitimport javax
.swing.text.html.HTMLDocument.Iteratorpublic class UseQueue {public static void main(String[] args) throws Exception {// 阻塞隊列LinkedBlockingQueue<String> q = new LinkedBlockingQueue<String>()q
.offer(
"a")q
.offer(
"b")q
.offer(
"c")q
.offer(
"d")q
.offer(
"e")q
.add(
"f")List<String> list = new ArrayList<String>()System
.out.println(q
.drainTo(list,
3))System
.out.println(list
.size())for (String string : list) {System
.out.println(string)}}
}
運行
總結
以上是生活随笔為你收集整理的LInkedBlockingQueue队列的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。