并发编程之Collections&Queue体系分析

并发编程之Collections&Queue体系分析

一、BlockingQueue阻塞队列

队列实质就是一种存储数据的结构

  • 通常用链表或者数组实现
  • 一般而言队列具备FIFO先进先出的特性,当然也有双端队列(Deque)优先级队列
  • 主要操作:入队(EnQueue)与出队(Dequeue)

image

BlockingQueue
  • 1、ArrayBlockingQueue 由数组支持的有界队列
  • 2、LinkedBlockingQueue 由链接节点支持的可选有界队列
  • 3、PriorityBlockingQueue 由优先级堆支持的无界优先级队列
  • 4、DelayQueue 由优先级堆支持的、基于时间的调度队列
ArrayBlockingQueue数据结构

队列基于数组实现,容量大小在创建ArrayBlockingQueue对象时已定义好

image

DelayQueue

由优先级堆支持的、基于时间的调度队列,内部基于无界队列PriorityQueue实现,而无界队列基于数组的扩容实现。

应用场景
电影票

要求
入队的对象必须要实现Delayed接口,而Delayed集成自Comparable接口

二、Java7HashMap死锁与Java8HashMap优化

HashMap

image

Jdk7-HashMap的扩容产生死锁问题的分析
Jdk8-HashMap的扩容无死锁的过程优化

三、ConcurrentHashMap线程安全与分段锁

Java7 Segment 继承 ReentrantLock
Java8 synchronized CAS

四、并发List-ArrayList与CopyOnWriteArrayList

ArrayList

线程不安全:数组越界、数据丢失

CopyOnWriteArrayList

线程不安全:线程安全

-------------已经触及底线 感谢您的阅读-------------

本文标题:并发编程之Collections&Queue体系分析

文章作者:趙小傑~~

发布时间:2019年08月17日 - 10:50:33

最后更新:2019年08月17日 - 12:13:51

原始链接:https://cnsyear.com/posts/193b888c.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%