Структура данных, чтобы неблокировать возвращать не заблокированные элементы, но блокировать, если и только если остались только заблокированные элементы? - PullRequest
0 голосов
/ 11 ноября 2019

Мне нужна структура данных, которая реализует API java.util.Deque<>, но ведет себя следующим образом:

  • очередь может содержать как "заблокированные", так и "разблокированные" элементы
  • при poll() вызывается:
    • первый разблокированный элемент возвращается немедленно
    • , когда очередь пуста, null возвращается немедленно
    • , если очередь не пуста, но все элементы«заблокированы», блоки poll() до тех пор, пока либо
      • не останется больше элементов в очереди, либо
      • элемент не будет разблокирован

Под "заблокированными" я думаю, что встроенная блокировка Java (объектный монитор), но я могу принять что-то еще.

Существует ли это?

...