Могут потребоваться другие операции, когда условие не выполняется. Существует четыре типичных формы:
- бросить исключение
- вернуть специальное значение
- блок
- тайм-аут
Для неблокирующей реализации могут произойти первые два.
См. Документ BlockingQueue
:
Очередь, которая дополнительно поддерживает операции, ожидающие очередь
стать непустым при извлечении элемента и ждать места для
стать доступным в очереди при хранении элемента.
Методы BlockingQueue бывают четырех видов, с различными способами
обработка операций, которые не могут быть выполнены немедленно, но могут быть
удовлетворены в какой-то момент в будущем: каждый бросает исключение,
секунда возвращает специальное значение (ноль или ложь, в зависимости от
операция), третий блокирует текущий поток на неопределенный срок до
операция может быть успешной, и четвертый блок только для заданного максимума
ограничение по времени, прежде чем сдаться. Эти методы обобщены в
следующая таблица:
Throws exception Special value Blocks Times out
Insert add(e) offer(e) put(e) offer(e, time, unit)
Remove remove() poll() take() poll(time, unit)
Examine element() peek() not applicable not applicable