在只有增加元素的情况下,对队列查询(.isEmpty)需不需要获取锁?

qq_15357533 2021-01-22 04:03:58
一个队列有线程对它在只有增加元素的操作的情况下,另一个线程只是查询(.isEmpty)这个队列为不为空,需不需要获取锁?
...全文
213 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
看你用的是线程安全的队列还是非线程安全的队列,如果是非线程安全队列,就要加锁

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧