LInkedBlockingQueue

也称为无界队列
基于链表的阻塞队列

内部维持着一个数据缓冲队列
该队列由一个链表构成

之所以能够高效的处理并发数据
因为,内部实现采用分离锁,读写分离两个锁
从而,实现生产者、消费者操作的完全并行运行

package com.bjsxt.base.coll013;import 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.TimeUnit;import javax.swing.text.html.HTMLDocument.Iterator;public 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(); iterator.hasNext();) {String string = (String) iterator.next();System.out.println(string);}}
}

运行

drainTo()

批量的获取队列中的元素
添加到集合中

package com.bjsxt.base.coll013;import 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.TimeUnit;import javax.swing.text.html.HTMLDocument.Iterator;public 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队列相关推荐

  1. JUC多线程:阻塞队列ArrayBlockingQueue与LinkedBlockingQueue

    一.什么是阻塞队列: 阻塞队列最大的特性在于支持阻塞添加和阻塞删除方法: 阻塞添加:当阻塞队列已满时,队列会阻塞加入元素的线程,直到队列元素不满时才重新唤醒线程执行加入元素操作. 阻塞删除:但阻塞队列 ...

  2. Java中的阻塞队列-LinkedBlockingQueue(二)

    原文地址:http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8 ...

  3. 10分钟搞定 Java 并发队列

    前言 如果按照用途与特性进行粗略的划分,JUC 包中包含的工具大体可以分为 6 类: 执行者与线程池 并发队列 同步工具 并发集合 锁 原子变量 在[并发系列]中,主要讲解了 执行者与线程池,同步工具 ...

  4. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  5. 10分钟搞定 Java 并发队列好吗?好的

    前言 如果按照用途与特性进行粗略的划分,JUC 包中包含的工具大体可以分为 6 类: 执行者与线程池 并发队列 同步工具 并发集合 锁 原子变量 在[并发系列]中,主要讲解了 执行者与线程池,同步工具 ...

  6. Java 高频面试题:聊一聊 JUC 下的 LinkedBlockingQueue

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:推荐 8 个常用 Spring Boot 项目个人原创+1博客:点击前往,查看更多 本文聊一下 JUC 下的 L ...

  7. 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景

    25 整体设计:队列设计思想.工作中使用场景 人生太短,要干的事太多,我要争分夺秒. --爱迪生 引导语 本章我们学习了 LinkedBlockingQueue.ArrayBlockingQueue. ...

  8. 面试官系统精讲Java源码及大厂真题 - 24 举一反三:队列在 Java 其它源码中的应用

    24 举一反三:队列在 Java 其它源码中的应用 世上无难事,只要肯登攀. 引导语 队列除了提供 API 供开发者使用外,自身也和 Java 中其他 API 紧密结合,比如线程池和锁,线程池直接使用 ...

  9. 并发-阻塞队列源码分析

    阻塞队列 参考: http://www.cnblogs.com/dolphin0520/p/3932906.html http://endual.iteye.com/blog/1412212 http ...

最新文章

  1. asp.net core系列 53 IdentityServer4 (IS4)介绍
  2. 亚马逊推出Simple Workflow Service手册
  3. JavaScript中的面向对象
  4. JDK源码解析之 java.lang.Class
  5. 中国好岳父?女婿亏掉公司半个亿 岳父3天还清!涉事公司回应了
  6. linux序列比对程序,Linux程序管理:top.htop.glances,dstat等命令使用方法
  7. h264解码延迟优化_FFMPEG H264/H265 编码延迟问题
  8. 解决keil中 点击setting 程序中断问题
  9. 融合多源信息的知识表示学习方法
  10. 做跨境电商的Anker的也回来“内卷”了?
  11. 基于PHP的学生作业管理系统
  12. 校招详解(术语、时间、流程)
  13. Android——广播(BroadcastReceiver)
  14. 美摄SDK 局部特效接入文档
  15. 有理数的四则运算 C、java
  16. jupyterhub安装与配置
  17. 在江西景德镇,连垃圾桶都是青花瓷的。。。
  18. 网络流量分析软件 mysql_网络流量监测图形分析工具 Cacti
  19. 2020年8月考试总结
  20. matlab 线性插值 linear,【转】线性插值(Linear Interpolation)基本原理

热门文章

  1. PS基础教程[3]如何去除照片上的水印
  2. TRUNCATE,DELETE,DROP的区别
  3. Web前端知识技能大汇总
  4. 设置控件全局显示样式appearance proxy
  5. 自制纯css下拉导航
  6. 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
  7. hdu1728 广搜
  8. 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例
  9. 工具 - MyEclipse算法机最新8.6forSpring有效
  10. 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?...