等待多个阻止队列

时间:2018-08-15 09:37:08

标签: java multithreading blockingqueue

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

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

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

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

如果我进入一个区域,我应该放弃等待其他区域的等待。该怎么办?

2 个答案:

答案 0 :(得分:0)

基本逻辑是:

  1. 使用布尔变量(即flag),该变量最初设置为false

  2. 当对象进入等待区域时,检查标志。

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

  4. 如果标志为true,只需从队列中删除对象,而无需执行任何操作。

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

答案 1 :(得分:0)

保留对Customer this正在等待的Customer中的队列的引用。 何时

  

进入一个区域

this正在等待的所有队列中除去Customer this,除了该队列,remove操作应为synchronized