Основным преимуществом является то, что BlockingQueue
обеспечивает правильную, поточно-ориентированную реализацию. Разработчики внедрили эту функцию самостоятельно в течение многих лет, но это сложно сделать правильно. Теперь среда выполнения имеет реализацию, разработанную, проверенную и поддерживаемую экспертами по параллелизму.
«Блокирующий» характер очереди имеет несколько преимуществ. Во-первых, при добавлении элементов, если емкость очереди ограничена, потребление памяти также ограничено. Кроме того, если потребители очереди слишком сильно отстают от производителей, производители естественным образом ограничиваются, поскольку им приходится ждать добавления элементов. При извлечении элементов из очереди основным преимуществом является простота; ожидание навсегда тривиально, а правильное ожидание указанного тайм-аута лишь немного сложнее.