发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

阻塞队列

收录了 阻塞队列 频道下的 50 篇内容

聊聊并发(七)——Java 中的阻塞队列

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。

Java 多线程案例之阻塞队列

本篇文章将介绍Java多线程案例,阻塞队列,阻塞队列在普通队列的基础上多了两种情况,一是阻塞队列为空时,如果进行出队操作,会使当前线程阻塞,直到有新元素插入阻塞队列,该线程才被通知继续执行出队操作;二是阻塞队列为满时...

7月月更
Java 中的阻塞队列

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。

6月月更
并发编程系列:阻塞队列的实现原理
并发编程系列:阻塞队列的实现原理

JVM阻塞队列基础

jdk
阻塞队列
七日更
28天写作
2月春节不断更
阻塞队列实现原理

如果队列是空的,消费者会一直等待,当生产者添加元素时,消费者是如何知道当前队列有元素的呢?如果让你来设计阻塞队列你会如何设计,如何让生产者和消费者进行高效率的通信呢?让我们先来看看JDK是如何实现的。

6月月更
从零开始自己动手写阻塞队列
从零开始自己动手写阻塞队列

在上面我们已经谈到了阻塞队列是并发安全的,而且我们还有将线程唤醒和阻塞的需求,因此我们可以选择可重入锁ReentrantLock保证并发安全,但是我们还需要将线程唤醒和阻塞,因此我们可以选择条件变量Condition进行线程的唤醒和阻塞操作,在Condition当中我们

Java
线程
阻塞队列
实战
生产者与消费者模式,数组阻塞队列(ArrayBlockingQueue)
生产者与消费者模式,数组阻塞队列(ArrayBlockingQueue)

生产者消费者模式最核心的部分是生产者与消费者之间的特殊容器,而阻塞队列是特殊容器最常见的实现。JDK中定义了阻塞队列接口BlockingQueue,JDK通过该接口为我们提供了很多种阻塞队列的实现,其中包括本节的主角ArrayBlockingQueue,该类位于java.util.conc

Java
学习
架构
并发编程
AQS 阻塞队列机制源码分享
AQS 阻塞队列机制源码分享

AbstractQueuedSynchronizer 是一个抽象类,以下我们会简称AQS,翻译成中文就是抽象队列同步器。他是是一个用来实现同步器,封装了各种底层的同步细节,我们想自定义自己的同步工具的时候,只需要定义这个类的子类并覆盖它提供的一些方法就好了。在R

AQS
并发阻塞队列(BlockingQueue)— 生产者消费者模式核心部件
并发阻塞队列(BlockingQueue)— 生产者消费者模式核心部件

在分析阻塞队列之前我们先看生产者消费者模式,这是一个很常见的模式,生产者负责数据的生产,而消费者则负数据的消费。一般来说生产者与消费者的数量比例是m:n,该模式最大的好处就是将数据生产方与消费方进行了解耦,使得它们之间不会互相影响。为了将生产

Java
架构
jdk
设计模式
Java 中的几种阻塞队列,kalilinux 渗透教程

remove: 删除数据时,如果队列中有此数据,删除成功返回true,否则返回false。如果包含一个或者多个object,那么只移除一个就返回true。注意:remove(o)是BlockingQueue接口的方法,remove()是Queue接口的方法。

Java
程序员
后端
Java 中的几种阻塞队列 (1),mybatis 返回主键原理

Java中的BlockingQueue接口是一个线程安全的存取队列,适用于生产者消费者的应用场景中,支持两个附加操作:

Java
程序员
后端
并发王者课-铂金05:致胜良器-无处不在的“阻塞队列”究竟是何面目
并发王者课 - 铂金 05:致胜良器 - 无处不在的“阻塞队列”究竟是何面目

在线程的同步中,阻塞队列是一个绕不过去的话题,它是同步器底层的关键。所以,我们在本文中将为你介绍阻塞队列的基本原理,以了解它的工作机制和它在Java中的实现。本文稍微有点长,建议先了解大纲再细看章节。

Java
多线程
并发
并发王者课
看看 AQS 阻塞队列和条件队列

蚂蚁、字节、PDD社招面经Java岗(分布式+线程安全+MySQL+CAS)

Java
程序员
后端
聊聊并发——生产者消费者模式

在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。

【并发编程系列 10】阻塞队列之 SynchronousQueue

advanceHead(h, m); // successfully fulfilled

Java
面试
后端开发
Golang并发编程实战:使用ring buffer实现高效的阻塞队列
Golang 并发编程实战:使用 ring buffer 实现高效的阻塞队列

当需要在多个goroutine之间共享数据时,使用队列是一种非常常见的方式。而阻塞队列是一种非常有用的队列类型,它能够在队列为空或已满时阻塞线程,直到队列变为非空或非满状态。

基于链表的有界阻塞队列 —— LinkedBlockingQueue
基于链表的有界阻塞队列 —— LinkedBlockingQueue

上一节看了基于数据的有界阻塞队列 ArrayBlockingQueue 的源码,通过阅读源码了解到在 ArrayBlockingQueue 中入队列和出队列操作都是用了 ReentrantLock 来保证线程安全。下面咱们看另一种有界阻塞队列:LinkedBlockingQueue。

Java
源码
AQS
源码阅读
LinkedBlockingQueue
Java 并发包源码学习系列:阻塞队列实现之 SynchronousQueue 源码解析

SynchronousQueue是一个不存储元素的阻塞队列,每个插入的操作必须等待另一个线程进行相应的删除操作,反之亦然,因此这里的Synchronous指的是读线程和写线程需要同步,一个读线程匹配一个写线程。

Java
编程
Java线程池实现原理及其在美团业务中的实践
Java 线程池实现原理及其在美团业务中的实践

本文通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。

基于数组的有界阻塞队列 —— ArrayBlockingQueue
基于数组的有界阻塞队列 —— ArrayBlockingQueue

在阅读完和 AQS 相关的锁以及同步辅助器之后,来一起阅读 JUC 下的和队列相关的源码。先从第一个开始:ArrayBlockingQueue。

Java
源码
队列
源码阅读
JUC
阻塞队列专题_资料-InfoQ中文网