java.util.concurrent очереди

Очереди

ConcurrentLinkedQueue - не блкирирающая очередь, не имеющая лимита. Наследуется от java.util.AbstractQueue

Также есть интерфейс public interface BlockingQueue extends Queue. И 5 имлепентаций блокирующих очередей.

Можно положить в очередь объект 4 разным способами

  •  кидает исключения, если очередь пуста (заполнена)
  •  возвращает true/false в зависимости от того, удалось ли совершить операцию.
  •  блокирует поток
  •  блокирует поток на определнное время (offer(e, time, unit))


  • ArrayBlockingQueue. Очередь с фиксированным размером. FIFO
  • DelayQueue Безразмерная очередь, элемент может быть взят из очереди, когда Delay кончился
  • LinkedBlockingDeque размерность очереди опциональна
  • LinkedBlockingQueue. FIFO
  • PriorityBlockingQueue приоритетная очередь
  • SynchronousQueue. Блокируащая очередь. Основное отличие от LinkedBlockingQueue в том, что метод put на пустой очереди будет блокироваться, если нет тредов, который висят в ожидании на take. Если 1 тред вызовет put, а второй take, то оба треда разблокируются одновременно. Или например можно использовать offer на очереди, дальше, если есть треды, готовые обработать этот запрос, запрос обработается, в противном случае, тред вызывающий offer может кинуть исключение или обработать задачу самостоятельно.

Комментариев нет:

Отправить комментарий