如题,请问线程1在put的时候,线程2是不是take的时候会阻塞,如果是,为什么要这样做呢?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
已结题
ArrayBlockingQueue在put的时候是不是不允许其他线程take?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
信长Synchronized 2020-11-05 23:16关注ArrayBlockingQueue可以像LinkedBlockingQueue那样用两个锁实现吗? - wuxinliulei的回答 - 知乎 https://www.zhihu.com/question/41941103/answer/158132078
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报
微信扫一扫点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
提交
- 2022-05-07 13:31山水有相逢2023的博客 ArrayBlockingQueue具有以下特性: 1)队列是有边界的,在创建时需指定队列大小;...下面从源码的角度来分析下ArrayBlockingQueue的代码实现,也就能够清晰明白ArrayBlockingQueue的特性,主要从put和take过程讲解。
- 2018-04-20 16:35brucexiajun的博客 最近找实习,发现各大公司对Java的多线程爱的很深沉,遂决定开扒java.util.concurrent包,防止自己忘了,也给初学者一个参考。以下内容都来自官方的API,例子是我自己造的。今天的主角是ArrayBlockingQueue。一 位置...
- 2021-03-08 21:24lmqesq的博客 问题描述-最近在看《Thinking in Java》的并发,收益匪浅。在生产消费者任务里有个BlockingQueue,使用她可以一定程度上忽略同步的问题。但是在队列的存取中出现了许多方法,就如标题所说的那样。上网上找了找顺手...
- 2021-04-22 09:32weixin_39853863的博客 java多线程系列(九)---ArrayBlockingQueue源码分析成员变量数组大小finalObject[]items;下一个进队元素的下标/**itemsindexfornexttake,poll,peekorremove*/inttakeIndex;下一个出队元素的下标/**...
- 2024-06-22 19:55栗筝i的博客 在 Java 中,确保集合线程安全的方法有多种,包括使用同步包装类、锁机制以及并发集合类。 最简单的方法是使用 Collections.synchronizedXXX 方法来包装集合,例如 Collections.synchronizedList 和 Collections....
- 2021-01-11 22:40码小果的博客 阻塞队列,是指多线程访问竞争资源时,当竞争资源已被某线程获取时,其它要获取该资源的线程需要阻塞等待;而且,ArrayBlockingQueue是按 FIFO(先进先出)原则对元素进行排序,元素都是从尾部插
- 2025-07-10 22:20csdn_tom_168的博客 Java线程间数据共享实现方式总结:1) 共享变量通过synchronized或ReentrantLock同步;2) volatile保证可见性,原子类实现无锁操作;3) 使用线程安全容器如ConcurrentHashMap;4) ThreadLocal实现线程隔离;5) ...
- 2021-06-14 14:05老李笔记的博客 java多线程ArrayBlockingQueue阻塞队列 方法 跑出异常 有返回值,不抛异常 阻塞 等等 超时等等 添加 add offer put offe(,) 移除 remove poll take poll(,) 检测队首元素 element peek - - import ...
- 2021-03-22 12:25weixin_39638859的博客 1.LinkedBlockingQueue介绍1.1BlockingQueue接口同ArrayBlockingQueue一样,LinkedBlockingQueue同样实现了BlockingQueue接口。1.2LinkedBlockingQueueLinkedBlockingQueueLinkedBlockingQueue是一个单向链表实现的...
- 2020-08-30 11:47ArrayBlockingQueue是Java并发编程中常用的线程安全队列,经常被用作任务队列在线程池中。它是基于数组实现的循环队列,具有线程安全的实现。 ArrayBlockingQueue的实现 ArrayBlockingQueue使用ReentrantLock和两...
- 2024-09-04 08:47Flying_Fish_Xuan的博客 是 Java 并发编程中一种常用的有界阻塞队列,适合生产者-消费者模型及需要在多个线程之间安全地共享数据的场景。通过显式锁和条件变量,提供了简单而有效的线程间通信机制。尽管它有容量限制和可能的锁竞争问题,但...
- 2020-08-26 11:39一旦有其他线程释放了空间,当前线程会被唤醒并执行插入操作,同时通知在`notEmpty`条件上等待的消费者线程。 2. 出队方法(Dequeue): - `take()`:从队列头部移除并返回一个元素,如果队列为空,线程会阻塞直到...
- 2023-09-03 13:30java爬坑中的博客 添加和获取方法都分为阻塞式和非阻塞式通过ReentrantLock确保Object[] items的线程安全问题因为是数组,保证fifo的时候需要知道当前获取元素的下标和放入元素的下标,takeindex和putindex你追我赶的局面,因为是数组...
- 2025-06-22 16:40msbQQ的博客 阻塞队列与我们平常接触到的普通队列(ArrayList)的最大不同点在于阻塞队列的添加和删除方法都是阻塞的阻塞添加:当阻塞队列元素已...当队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作。
- 2020-08-30 07:17除此之外,ArrayBlockingQueue还提供了一些其他方法,如`peek()`查看但不移除队首元素,`remainingCapacity()`查询剩余容量等,这些方法都设计为线程安全的,可以方便地在多线程环境中使用。 总的来说,...
- 2023-10-25 20:08.29.的博客 线程是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位。 进程是程序的基本执行实体。 - 并发:在同一时刻,有多个指令在单个CPU上**交替**执行。 - 并行:在同一时刻,有多个指令在...
- 2021-02-27 16:48AkaCMD的博客 在java集合框架中,大多的集合类是线程不安全的.比如我们常用的ArrayList等等.我们写一个例子看,为什么说ArrayList是不安全的.例子1 证明ArrayList是线程不安全的我们开启100个线程.每个线程向List加100个数据,那么当...
- 乐昂的博客 前言:BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的两个重要...
- 2020-08-26 11:21当有其他线程调用notFull的signal方法时,put线程会被唤醒,继续执行加入队列的操作。 4. take方法 take方法是ArrayBlockingQueue中的另一个关键方法,用于从队列中取出元素。在take方法中,首先会获取锁,然后...
- 没有解决我的问题, 去提问