Java BlockingQueue与多个消费线程不公平

问题描述 投票:1回答:1

我正在使用(java)LinkedBlockingQueue创建一个资源池,其中包括

  • 资源元素是等价的,属于一个池,它们的顺序是无所谓的。
  • 消费线程是相互竞争的线程,每次用 "拉 "操作抓取一个资源,使用该资源,然后用 "加 "操作将其返回池中。
  • 当一个特定的资源被一个消费者线程使用时,它不能被其他消费者线程使用。

问题是 LinkedBlockingQueue 不做等待消费者的FIFO。,而且服务水平不统一。

有什么想法吗?先谢谢了。

java multithreading blockingqueue linkedblockingqueue
1个回答
1
投票

我理解你的情况可能需要这种类型的设计,但反复从队列中获取资源并将其放回,在我看来有点不寻常。

你能不能简单地有一个固定的工人池(每个池都与它的资源绑定),然后使用 LinkedBlockingQueue 而不是用于分配工作?

© www.soinside.com 2019 - 2024. All rights reserved.