个人简介

Echo Blog


江湖无名 安心练剑
  • JCIP-16-双端队列之 LinkedBlockingDeque
    问题 LinkedBlockingDeque 是什么? 优缺点? 应用场景? 源码实现? 个人启发? LinkedBlockingDeque 双向并发阻塞队列。 所谓双向是指可以从队列的头和尾同时操作,并发只是线程安全的实现,阻塞允许在入队出队不满足条件时挂起线程,这里说的队列是指...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-15-双端队列之 ArrayDeque
    ArrayDeque ArrayDeque不是线程安全的。 ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。 当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。 特性 无容量大小限制,容量按需增长; 非线程安全队列,无同步策略,不支持多线程安全访问; ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-14-双端队列与工作密取
    双端队列 Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋壳。 Deque 主要实现类有ArrayDeque 和 LinkedBlockingDeque。 使用场景 Deque 的实现类主要分为两种场景: 一般场景 LinkedList 大小可变的链表双端队列,允许元素为 null ArrayDeque 大下可变的数...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-13-无锁队列
    无锁队列能实现吗? 上面说的加锁的环形队列,可以保证线程安全。 但是加锁能不能去掉呢? 答案是肯定的,请看下面的娓娓道来。 i++ 是原子操作吗? i++和++i是原子操作吗? 有一个很多人也许都不是很清楚的问题:i++或++i是一个原子操作吗?在上一节,其实已经提到了,在SMP(对称多处理器)上,即使是单条递减汇编指令,其原子性也是不能保证的。那么在单处理机系统中呢? 在编译...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-12-环形队列
    Q 是什么? 优势? 使用场景? 无锁队列怎么实现? 1.环形队列是什么 队列是一种常用的数据结构,这种结构保证了数据是按照“先进先出”的原则进行操作的,即最先进去的元素也是最先出来的元素.环形队列是一种特殊的队列结构,保证了元素也是先进先出的,但与一般队列的区别是,他们是环形的,即队列头部的上个元素是...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-11-二叉堆
    Q 是什么? 有什么用? 优势? 使用场景? 二叉堆 二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。 最大堆:父结点的键值总是大于或等于任何一个子节点的键值; 最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 示意图如下: 二叉堆一般都通过”...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-10-优先级队列 Priority Queue
    相关学习 优先级队列 二叉堆 堆排序 延迟队列 Q 是什么? 怎么用 注意事项? 源码 优先级队列 我们知道队列是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在队列中基于优先级处理对象。举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大量数据...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-09-java 中 7 种阻塞队列 BlockingQueue 概览篇
    一些值得思考的问题 为什么要有阻塞队列? 什么是阻塞队列 优缺点 适用场景 实现思想+源码 个人启发 阻塞队列 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变...
    2019-01-18 03:21:15 | Concurrency