Sobes.tech
Назад к вопросам
Senior
4

Что будет если очередь переполнится и достигнет максимума?

Компании, где спрашивали
Позитив Технолоджис

Ответ от нейросети

sobes.tech AI

Если очередь в Java (например, BlockingQueue) переполнится и достигнет максимального размера, поведение зависит от используемого метода добавления элемента:

  • add() — выбросит IllegalStateException с сообщением "Queue full".
  • offer() — вернёт false, не добавляя элемент.
  • put() (для блокирующих очередей) — поток, вызывающий этот метод, будет блокироваться до тех пор, пока в очереди не освободится место.

Таким образом, при переполнении важно выбирать подходящий метод в зависимости от логики приложения: блокировать поток, обработать отказ или выбросить исключение.

Пример с ArrayBlockingQueue:

BlockingQueue<String> queue = new ArrayBlockingQueue<>(2);

queue.add("one");
queue.add("two");
// Следующая строка выбросит IllegalStateException
queue.add("three");

// Или
boolean offered = queue.offer("three"); // вернёт false

// Или
queue.put("three"); // заблокирует поток, пока не освободится место