摘要:
ArrayBlockingQueue :基于数组结构实现的一个有界阻塞队列 LinkedBlockingQueue : 基于链表结构实现的一个无界阻塞队列,指定容量为有界阻塞队列 SynchronousQueue :不存储元素的阻塞队列 LinkedTransferQueue : 基于链表结构实现的 阅读全文
摘要:
【1】为什么要使用线程池? 示例演示: //设置业务模拟 class MyRunnable implements Runnable { private int count; public MyRunnable(int count) { this.count = count; } public int 阅读全文
摘要:
【1】前言 本篇幅是对 线程池底层原理详解与源码分析 的补充,默认你已经看完了上一篇对ThreadPoolExecutor类有了足够的了解。 【2】ScheduledThreadPoolExecutor的介绍 1.ScheduledThreadPoolExecutor继承自ThreadPoolExe 阅读全文
摘要:
Future模式 【1】Future模式是多线程开发中常见的设计模式,它的核心思想是异步调用。对于Future模式来说,它无法立即返回你需要的数据,但是它会返回一个契约,将来你可以凭借这个契约去获取你需要的信息。 【2】通俗一点就是生产者-消费者模型的扩展。经典“生产者-消费者”模型中消息的生产者不 阅读全文
摘要:
什么是CopyOnWrite容器 【1】CopyOnWrite容器是基于并发模式Copy-on-Write模式(最简单的并发解决方案)实现的用于避免共享的数据集合。 【2】CopyOnWrite容器又被成为写时复制的容器,即当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行C 阅读全文
摘要:
SynchronousQueue介绍 【1】SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take。 【2】如图所示,SynchronousQueue 最大的不同之处在于,它的容量为 0,所以没有一个地方来暂存元 阅读全文
摘要:
【1】DelayQueue 是一个支持延时获取元素的阻塞队列, 内部采用优先队列 PriorityQueue 存储元素,同时元素必须实现 Delayed 接口;在创建元素时可以指定多久才可以从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素。延迟队列的特点是:不是先进先出,而是会按照延迟时间 阅读全文
摘要:
PriorityBlockingQueue介绍 【1】PriorityBlockingQueue是一个无界的基于数组的优先级阻塞队列,数组的默认长度是11,也可以指定数组的长度,且可以无限的扩充,直到资源消耗尽为止,每次出队都返回优先级别最高的或者最低的元素。默认情况下元素采用自然顺序升序排序,当然 阅读全文
摘要:
ArrayBlockingQueue介绍 ArrayBlockingQueue是最典型的有界阻塞队列,其内部是用数组存储元素的,初始化时需要指定容量大小,利用 ReentrantLock 实现线程安全。 在生产者-消费者模型中使用时,如果生产速度和消费速度基本匹配的情况下,使用ArrayBlocki 阅读全文
摘要:
什么是阻塞队列 【1】阻塞队列:从定义上来说是队列的一种,那么肯定是一个先进先出(FIFO)的数据结构。与普通队列不同的是,它支持两个附加操作,即阻塞添加和阻塞删除方法。 【2】阻塞添加:当阻塞队列是满时,往队列里添加元素的操作将被阻塞。 【3】阻塞移除:当阻塞队列是空时,从队列中获取元素/删除元素 阅读全文
摘要:
LinkedBlockingDeque介绍 【1】LinkedBlockingDeque是一个基于链表实现的双向阻塞队列,默认情况下,该阻塞队列的大小为Integer.MAX_VALUE,可以看做无界队列,但也可以设置容量限制,作为有界队列。 【2】相比于其他阻塞队列,LinkedBlockingD 阅读全文
摘要:
LinkedBlockingQueue介绍 【1】LinkedBlockingQueue是一个基于链表实现的阻塞队列,默认情况下,该阻塞队列的大小为Integer.MAX_VALUE,由于这个数值特别大,所以 LinkedBlockingQueue 也被称作无界队列,代表它几乎没有界限,队列可以随着 阅读全文
摘要:
文章目录 为什么要了解扩容机制 ArrayList LinkedList Vector Stack java.util.concurrent.CopyOnWriteArrayList Queue相关的默认容量以及扩容机制 java.util.concurrent.ArrayBlockingQueue 阅读全文