java - 等待多个阻塞队列
问题描述
如何在 Java 中等待多个阻塞队列?
例如,如果有一位顾客想进入等候休息室。有3个等候休息室,每个休息室都有固定数量的座位。
考虑到这是一个并发编程问题,客户如何同时等待所有这些。
terminal.waitingArea1.enterWaitingArea(this);
terminal.waitingArea2.enterWaitingArea(this);
terminal.waitingArea3.enterWaitingArea(this);
如果我进入一个区域,我应该放弃等待其他区域。如何才能做到这一点?
解决方案
基本逻辑是:
使用初始设置为 的布尔变量(即 a
flag
)false
。当物体进入等候区时,检查标志。
如果标志为
false
,则将其设置为 true,然后执行所需的操作。如果标志是
true
,只需从队列中删除对象,不做任何事情。
如果您使用多个线程,synchronized
请在对象上使用。
推荐阅读
- ionic3 - Ionic - 无法为输入字符串应用插件 [class 'com.google.gms.googleservices.googleservicesplugin'] >:“+”
- github - 如何防止/禁用降价中的自动列表编号递增?
- constraint-programming - 在 ojAlgo 中显示所有可能的解决方案
- android - Unity 中使用 Facebook SDK 的延迟深度链接
- python - 为每个级别对 Pandas 中的多索引进行不同的排序
- python - PIL getbbox 方法是如何工作的?
- scala - Spark - 将函数应用于没有 UDF 的数据框的列
- c++ - 是否可以在带有 C++17 的 GCC 中使用显式寄存器变量?
- javascript - vanilla js,获取具有特定属性的锚点
- java - 如何将大写字符串转换为驼峰大小写并保持首字母缩写词不变?