Sobes.tech
Senior
21

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

Companies where asked
Позитив Технолоджис

Answer from AI

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"); // заблокирует поток, пока не освободится место