第八节:并发编程之Collections&Queue体系分析-杨过

截图

AQS同步器条件队列应用逻辑

image-20210614130609613

课程内容

  • BlockingQueue阻塞队列
  • Java7HashMap死锁与Java8HashMap优化
  • ConcurrentHashMap线程安全与分段锁
  • 并发List-ArrayList与CopyOnWriteArrayList

BlockingQueue

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

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

image-20210613133324437

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

ArrayBlockingQueue数据结构

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

image-20210614131801852

DelayQueue

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

应用场景

电影票

要求

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

HashMap

image-20210614131833242

Jdk7-HashMap的扩容产生死锁问题的分析

Jdk8-HashMap的扩容无死锁的过程优化

ConcurrentHashMap

image-20210614131904968

ArrayList

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

CopyOnWriteArrayList

线程安全:

posted @ 2021-06-13 13:23  傀儡岁月  阅读(79)  评论(0编辑  收藏  举报