Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ArrayBlockingQueue vs LinkedBlockingQueue


Автор: Royan 10.2.2010, 14:08
Предположим, у вас такая ситуация. В 99.99% случаев размер очереди примерно равен 100 000 элементов, но в какой то момент (те самые 0.01%) очередь вырастает до 100 000 000 элементов. Какую из двух очередей (ArrayBlockingQueue или LinkedBlockingQueue) следует использовать и почему?

Автор: MaxPayneC 10.2.2010, 14:19
Думаю ArrayBlockingQueue - он быстро осуществляет операции доступа, но медленно операции, связанные с перераспределенем памяти. Если они происходят в 0.01% случаев, полагаю это будет оптимальным решением.

Автор: COVD 10.2.2010, 16:01
ArrayBlockingQueue имеет фиксированную вместимость - "Once created, the capacity cannot be increased". Поэтому только LinkedBlockingQueue.

Автор: Royan 10.2.2010, 18:39
COVD, Правильно!
Фигня еще в том, что таким вот образом, разработчику придется хранить 100 000 000 ссылок в объекте ArrayBlockingQueue на случай такого количества элементов, т.е. на лицо не эффективный расход памяти в 99.99% времени работы приложения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)