Опашката е важен аспект на всеки език за програмиране. Особено ако говорим за . В тази статия ще обсъдим интерфейса BlockingQueue в Java в следния ред:
- Какво представлява интерфейсът BlockingQueue в Java?
- Типове BlockingQueue
- Методи в интерфейса BlockingQueue
- Интерфейс BlockingQueue в Java Пример: Услуга
Какво представлява интерфейсът BlockingQueue в Java?
Интерфейсът BlockingQueue в Java е опашка, която се блокира, когато се опитате да оттеглите от него и опашката е празна, или ако се опитате да поставите елементи в опашката и опашката вече е пълна. Нишка, опитваща се да деактивира от празна опашка, се блокира, докато друга нишка вмъкне елемент в опашката. Нишка, опитваща се да постави елемент в пълна опашка, се блокира, докато някоя друга нишка не освободи място в опашката, или чрез оттегляне на един или повече елементи или изчистване на опашката напълно.
Интерфейсът BlockingQueue в Java не приемануластойности и хвърлянеNullPointerExceptionако се опитате да съхраните нулевата стойност в опашката.Реализациите на Java BlockingQueue са безопасно за конци . Всички методи за чакане са атомни по своята същност и използват вътрешни брави или други форми на контрол на паралелността.
как да конвертирате double в int в Java
Диаграма на класа на опашката на Java
Интерфейсът на Java Queue разширява интерфейса за събиране. Интерфейсът Collection разширява интерфейса Iterable. Някои от често използваните класове за изпълнение на Queue са LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,и т.н. AbstractQueue осигурява скелетна реализация на интерфейса на опашката за намаляване на усилията при внедряването на Queue.
Типове BlockingQueue
BlockingQueue са два вида:
- Неограничена опашка: Капацитетът на блокиращата опашка ще бъде зададен на Integer.MAX_VALUE. В случай на неограничена блокираща опашка, опашката никога няма да се блокира, защото може да нарасне до много голям размер. когато добавяте елементи, размерът му нараства.
Синтаксис:
BlockingQueue блокираща опашка = new LinkedBlockingDeque ()
- Ограничена опашка: Вторият вид опашка е ограничената опашка. В случай на ограничена опашка можете да създадете опашка, заобикаляйки капацитета на опашката в конструктора на опашки:
Синтаксис:
// Създава блокираща опашка с капацитет 5
BlockingQueue блокираща опашка = нов LinkedBlockingDeque (5)
Методи в интерфейса BlockingQueue
Промяна на типа | Синтаксис на метода | Използвани за | Описание |
булев | добавете (E и) | Вмъкване | Вмъква посочения елемент в тази опашка, ако е възможно да го направите незабавно, без да нарушавате ограниченията на капацитета, връщайки true при успех и хвърляйки IllegalStateException, ако в момента няма налично място. |
булев | съдържа (Обект o) | Разгледайте | Връща true, ако тази опашка съдържа посочения елемент. |
инт | drainTo (Колекция c) | Извличане или премахване | Премахва всички налични елементи от тази опашка и ги добавя към дадената колекция. |
инт | drainTo (Колекция c, int maxElements) | Извличане или премахване | Премахва най-много дадения брой налични елементи от тази опашка и ги добавя към дадената колекция. |
булев | оферта (E и) | Вмъкване | Вмъква посочения елемент в тази опашка, ако е възможно да се направи незабавно, без да се нарушават ограниченията на капацитета, връщайки true при успех и false, ако в момента няма място. |
булев | оферта (E e, дълго време за изчакване, единица TimeUnit) | Вмъкване | Вмъква посочения елемент в тази опашка, изчаква до определеното време за изчакване, ако е необходимо, за да стане свободно място. |
Е | анкета (дълго време за изчакване, единица TimeUnit) | Извличане или премахване | Извлича и премахва главата на тази опашка, изчаква до определеното време за изчакване, ако е необходимо елементът да стане достъпен. |
нищожен | сложи (E e) | Вмъкване | Вмъква посочения елемент в тази опашка, изчаква, ако е необходимо, за да стане свободно място. |
инт | оставащ капацитет () | Разгледайте | Връща броя на допълнителните елементи, които тази опашка може в идеалния случай (при липса на ограничения на паметта или ресурса) да приема без блокиране, или Integer.MAX_VALUE, ако няма вътрешно ограничение. |
булев | премахване (Обект o) + | Извличане или премахване | Премахва единичен екземпляр на посочения елемент от тази опашка,ако е налице. |
Е | предприеме() | Извличане или премахване | Извлича и премахва главата на тази опашка, като чака, ако е необходимо, докато елемент стане наличен. |
Интерфейс BlockingQueue в Java Пример: Услуга
пакет com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue публичен клас ProducerConsumerService {public static void main (String [] args) {// Създаване на BlockingQueue с размер 10 BlockingQueue queue = new ArrayBack 10) Производител производител = нов производител (опашка) Потребителски потребител = нов потребител (опашка) // стартиращ производител за създаване на съобщения в опашката нова нишка (производител) .start () // стартиращ потребител да консумира съобщения от опашка нова нишка (потребител) .start () System.out.println („Производителят и потребителят е стартиран“)}}
С това стигаме до края на статията BlockingQueue Interface в Java. Надявам се, че всички ваши концепции вече са ясни.
Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен за студенти и професионалисти, които искат да бъдат Java Developer. Курсът е предназначен да ви даде начален старт в програмирането на Java и да ви обучи както за основни, така и за разширени Java концепции, заедно с различни Java рамки като Hibernate & Spring.
Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог „Интерфейс BlockingQueue в Java“ и ние ще се свържем с вас възможно най-скоро.