Java BlockingQueue с несколькими потребительскими потоками несправедливо - PullRequest
1 голос
/ 01 мая 2020

Я создаю пул ресурсов, используя (java) LinkedBlockingQueue, где

  • элементы ресурсов эквивалентны, принадлежат пулу, где их порядок не имеет значения.
  • потребители являются конкурирующими потоками, захватывающими по одному ресурсу за раз, с помощью операции «вытягивания», работы с ресурсом и последующей передачи его обратно в пул с помощью операции «добавления».
  • В то время как определенный ресурс используется потребительским потоком, он не должен быть доступен другим потребительским потокам.

Проблема заключается в следующем: LinkedBlockingQueue не создает FIFO ожидающих потребителей , а уровень службы не является единообразным.

Есть идеи по поводу топи c? Заранее спасибо.

1 Ответ

1 голос
/ 01 мая 2020

Я понимаю, что в вашей ситуации может потребоваться такой тип проектирования, но неоднократное извлечение ресурсов из очереди и их возврат кажется мне немного необычным.

Не могли бы вы просто иметь фиксированный пул работников ( каждый привязан к своим ресурсам) и использовать LinkedBlockingQueue вместо распределения рабочих мест / работы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...