Java LinkedBlockingQueue с способность сигнализировать о завершении?

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

  1. Потребитель обработал объекты быстрее, чем производитель был способен сгенерировать новые объекты (производитель использует ввод-вывод перед созданием объектов).
  2. Производитель закончил создание объектов.

Если очередь пуста, я хочу, чтобы потребитель ждал, пока новый объект не станет доступным, или пока производитель не сообщит, что это сделано.

Мои исследования до сих пор ни к чему не привели, потому что я все равно пришел к циклу, который проверяет как очередь, так и отдельный логический флаг (isDone). Учитывая, что нет возможности ждать несколько блокировок (предполагается ожидание очереди и флага), что можно сделать, чтобы решить эту проблему?

6
задан Yon 3 March 2012 в 07:10
поделиться