Очереди
ConcurrentLinkedQueue - не блкирирающая очередь, не имеющая лимита. Наследуется от java.util.AbstractQueue
Также есть интерфейс public interface BlockingQueue extends Queue. И 5 имлепентаций блокирующих очередей.
Можно положить в очередь объект 4 разным способами
ConcurrentLinkedQueue - не блкирирающая очередь, не имеющая лимита. Наследуется от java.util.AbstractQueue
Также есть интерфейс public interface BlockingQueue
Можно положить в очередь объект 4 разным способами
- кидает исключения, если очередь пуста (заполнена)
- возвращает true/false в зависимости от того, удалось ли совершить операцию.
- блокирует поток
- блокирует поток на определнное время (offer(e, time, unit))
- ArrayBlockingQueue. Очередь с фиксированным размером. FIFO
- DelayQueue
Безразмерная очередь, элемент может быть взят из очереди, когда Delay кончился - LinkedBlockingDeque
- LinkedBlockingQueue. FIFO
- PriorityBlockingQueue приоритетная очередь
- SynchronousQueue. Блокируащая очередь. Основное отличие от LinkedBlockingQueue в том, что метод put на пустой очереди будет блокироваться, если нет тредов, который висят в ожидании на take. Если 1 тред вызовет put, а второй take, то оба треда разблокируются одновременно. Или например можно использовать offer на очереди, дальше, если есть треды, готовые обработать этот запрос, запрос обработается, в противном случае, тред вызывающий offer может кинуть исключение или обработать задачу самостоятельно.
Комментариев нет:
Отправить комментарий