Из трех перечисленных вами, единственным, который фактически является классом, является ArrayBlockingQueue.Очередь блокировки отличается от обычной очереди тем, что, если объект пытается удалить передний элемент, он приостанавливает выполнение до тех пор, пока не появится доступный элемент для удаления.
«BlockingQueue» и «Queue» - это просто интерфейсы;Вы не можете создать их экземпляр.Типы BlockingQueue, которые вы можете создать, это ArrayBlockingQueue, LinkedBlockingQueue и т. Д.
Лично я бы использовал LinkedBlockingQueue для этого приложения - преимущество использования связанного списка состоит в том, что нет установленной максимальной емкости и использование памятиуменьшается по мере уменьшения очереди.