首页 > 解决方案 > 等待多个阻塞队列

问题描述

如何在 Java 中等待多个阻塞队列?

例如,如果有一位顾客想进入等候休息室。有3个等候休息室,每个休息室都有固定数量的座位。

考虑到这是一个并发编程问题,客户如何同时等待所有这些。

  terminal.waitingArea1.enterWaitingArea(this);
  terminal.waitingArea2.enterWaitingArea(this);
  terminal.waitingArea3.enterWaitingArea(this);

如果我进入一个区域,我应该放弃等待其他区域。如何才能做到这一点?

标签: javamultithreadingblockingqueue

解决方案


基本逻辑是:

  1. 使用初始设置为 的布尔变量(即 a flagfalse

  2. 当物体进入等候区时,检查标志。

  3. 如果标志为false,则将其设置为 true,然后执行所需的操作。

  4. 如果标志是true,只需从队列中删除对象,不做任何事情。

如果您使用多个线程,synchronized请在对象上使用。


推荐阅读