当前位置: 首页 > 面试题库 >

如何并行等待多个阻塞队列?

蒋阳华
2023-03-14
问题内容

我有两个分开的阻塞队列。客户端通常使用第二个阻塞队列中的第一个来检索要处理的元素。

在某些情况下,客户端对两个阻塞队列中的元素感兴趣,无论哪个队列首先提供数据。

客户端如何并行等待两个队列?


问题答案:

您可以尝试poll在某种循环中使用该方法,以仅在指定时间量内等待一个队列,然后再轮询另一个队列。

除此之外,我会说在另一个线程上为每个队列运行阻塞操作并为您的主应用程序提供回调接口是另一个稍微复杂的选择。



 类似资料:
  • 我正在使用java Callable和ExecutorService执行计算: 我想让任务运行最多2分钟。但如果我打电话: 然后它就会立刻封锁!不要让我为其他任务分配超时,直到超时结束。 我可以用 但它返回的是未来列表,我不知道什么任务属于哪个未来。

  • 我有一个多线程应用程序,其中一个线程将项目放入< code>BlockingQueue中,多个线程从中取出项目进行处理。问题是关于从队列中获取项目,目前它是这样实现的: 根据<code>BlockingQueue的JavaDoc。take()它检索并删除队列的头部,如果需要,等待元素可用,对于<code>PriorityBlockingQueue直到队列中出现一个项目: 实现我们的逻辑的另一种方法

  • 本文向大家介绍Java countDownLatch如何实现多线程任务阻塞等待,包括了Java countDownLatch如何实现多线程任务阻塞等待的使用技巧和注意事项,需要的朋友参考一下 我这里需要通过多线程去处理数据,然后在所有数据都处理完成后再往下执行。这里就用到了CountDownLatch。把countdownlatch作为参数传入到每个线程类里,在线程中处理完数据后执行countdo

  • 我在Scala中有一个要求,即运行一系列http调用,这些调用必须按顺序完成且不阻塞。我怎样才能做到这一点?

  • 问题内容: 如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案 确实 并行运行这两个操作,但如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。 如果您只想启动它们,并行运行它们,并获得

  • 问题内容: 我如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案确实并行运行这两个操作,但是如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。如果您只想启动它们,并行运行它们,并获得两