第八节:并发编程之Collections&Queue体系分析-杨过
截图
AQS同步器条件队列应用逻辑
课程内容
- BlockingQueue阻塞队列
- Java7HashMap死锁与Java8HashMap优化
- ConcurrentHashMap线程安全与分段锁
- 并发List-ArrayList与CopyOnWriteArrayList
BlockingQueue
队列就是一种存储数据的结构。
- 通常用链表或数组实现
- 一般而言队列具备FIFO先进先出的特性,当然也有双端队列(Deque),优先级队列
- 主要操作:入队(EnQueue) 与 出队(Dequeue)
- ArrayBlockingQueue 由数组支持的有界队列
- LinkedBlockingQueue 由链接节点支持的可选有界队列
- PriorityBlockingQueue 由优先级堆支持的无界优先级队列
- DelayQueue 由优先级堆支持的、基于时间的调度队列。
ArrayBlockingQueue数据结构
队列基于数组实现,容量大小在创建ArrayBlockingQueue对象时已定义好
DelayQueue
由优先级堆支持的、基于时间的调度队列,内部基于无界队列PriorityQueue实现,而无界队列基于数组的扩容实现。
应用场景
电影票
要求
入队的对象必须要实现Delayed接口,而Delayed集成自Comparable接口
HashMap
Jdk7-HashMap的扩容产生死锁问题的分析
Jdk8-HashMap的扩容无死锁的过程优化
ConcurrentHashMap
ArrayList
线程不安全:数组越界, 数据丢失
CopyOnWriteArrayList
线程安全: