社区
Java SE
帖子详情
在只有增加元素的情况下,对队列查询(.isEmpty)需不需要获取锁?
qq_15357533
2021-01-22 04:03:58
一个队列有线程对它在只有增加元素的操作的情况下,另一个线程只是查询(.isEmpty)这个队列为不为空,需不需要获取锁?
...全文
213
6
打赏
收藏
在只有增加元素的情况下,对队列查询(.isEmpty)需不需要获取锁?
一个队列有线程对它在只有增加元素的操作的情况下,另一个线程只是查询(.isEmpty)这个队列为不为空,需不需要获取锁?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
八爻老骥
2021-01-29
打赏
举报
回复
此时加锁是为了同步,强制队列化,比如判断出IsEmpty()==true了,后续会有一个针对空队列的逻辑,那插入操作要等一等,等这一段代码运行完了再进行实际的插入,反之亦然。如果仅仅是为了判断而判断,那锁就没意义了,还浪费性能。
qq_15357533
2021-01-28
打赏
举报
回复
好像是,我也忘记了怎么要问这个问题的了。
KeepSayingNo
2021-01-28
打赏
举报
回复
一个队列只有增加元素,不取元素,那你判断空还有什么意义呢
qybao
2021-01-28
打赏
举报
回复
引用 2 楼 qq_15357533 的回复:
如果队列一开始就有元素, 一个线程A不断给队列添加元素,另一个线程B查询队列为不为空,线程B需要获取锁吗
如果如你所说这样的用例,那不需要 但是,你这个队列光有增,没有减,数据会越来越多,内存消耗越来越大,没问题吗?
qq_15357533
2021-01-27
打赏
举报
回复
如果队列一开始就有元素, 一个线程A不断给队列添加元素,另一个线程B查询队列为不为空,线程B需要获取锁吗
qybao
2021-01-22
打赏
举报
回复
看你用的是线程安全的队列还是非线程安全的队列,如果是非线程安全队列,就要加锁
数据结构:
队列
队列
queue的定义:入队在一端(队尾)进行而出队在另一端(队首)进行的线性表。即:先进先出的线性表
队列
的操作 入队操作:将数据
元素
值插入队尾 出队操作:移除队首的数据
元素
是否为空:判断队中是否包含数据...
数据结构:图文详解
队列
| 循环
队列
的各种操作(出队,入队,
获取
队列
元素
,判断
队列
状态)
队列
常用的操作有入队(Enqueue)、出队(Dequeue)、
获取
队头
元素
(Front/Peek)、
获取
队列
长度(Size/Length)等。
队列
的特点是按照
元素
加入的先后顺序进行操作,先加入
队列
的
元素
会先被取出,后加入的
元素
会后被...
队列
队列
定义:
队列
是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列
(Queue)是一种先进先出(First In First Out)的线性表,简称FIFO。... getSize()
获取
队列
中有效
元素
的个数 2.
isE
mpty
(...
如何设计一个循环
队列
文章目录前言一、思路二、代码实现1.MyCircularQueue(k) 构造方法2.Front 从队首
获取
元素
3.Rear
获取
队尾
元素
4.enQueue(value) 向循环
队列
插入一个
元素
5.deQueue():从循环
队列
中删除一个
元素
6.
isE
mpty
() 判断循环...
阻塞
队列
详细介绍
这两个附加的操作是:在
队列
为空时,
获取
元素
的线程会等待
队列
变为非空。当
队列
满时,存储
元素
的线程会等待
队列
可用。阻塞
队列
常用于生产者和消费者的场景,生产者是往
队列
里添加
元素
的线程,消费者是从
队列
里拿
元素
...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章