队列:第一章:阻塞队列

简介: 队列:第一章:阻塞队列

理论:

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列,下图展示了如何通过阻塞队列来合作:



线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素

常用的队列主要有以下两种:

(当然通过不同的实现方式,还可以延伸出很多不同类型的队列,DelayQueue就是其中的一种)


   先进先出(FIFO):先插入的队列的元素也最先出队列,类似于排队的功能。从某种程度上来说这种队列也体现了一种公平性。


   后进先出(LIFO):后插入队列的元素最先出队列,这种队列优先处理最近发生的事件。  

好处:

接口结构和实现类:

相关文章
|
6月前
|
算法 Java
Java数据结构——队列
Java数据结构——队列
47 4
|
5月前
|
算法 调度 Python
数据结构与算法-队列篇
数据结构与算法-队列篇
29 3
|
6月前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
55 0
|
6月前
|
机器学习/深度学习 存储 算法
队列——“数据结构与算法”
队列——“数据结构与算法”
|
6月前
|
消息中间件 安全 Java
多线程(初阶七:阻塞队列和生产者消费者模型)
多线程(初阶七:阻塞队列和生产者消费者模型)
56 0
生产者消费者模型(基于标准库提供的阻塞队列、基于环形数组自实现的阻塞队列)
生产者消费者模型(基于标准库提供的阻塞队列、基于环形数组自实现的阻塞队列)
|
6月前
|
存储 前端开发
快速掌握队列的基础知识
快速掌握队列的基础知识
|
6月前
|
安全 Java
队列的学习(三) 手写一个阻塞队列
队列的学习(三) 手写一个阻塞队列 本文将介绍如何手写一个阻塞队列。阻塞队列是一种线程安全的队列,当队列为空时,消费者线程将被阻塞直到队列中有元素可供消费;当队列已满时,生产者线程将被阻塞直到队列有空闲位置可供插入元素。
|
算法 前端开发
数据结构与算法(五)队列
数据结构与算法(五)队列
90 0
|
存储 Java
Java数据结构之队列
队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出
117 0