Rinda ir svarīgs jebkuras programmēšanas valodas aspekts. It īpaši, ja mēs runājam par . Šajā rakstā mēs apspriedīsim Java bloķēšanas rindas saskarni šādā secībā:
- Kas ir Java bloķēšanas rindas saskarne?
- BlockingQueue Types
- Metodes BlockingQueue saskarnē
- BlockingQueue saskarne Java piemērā: Pakalpojums
Kas ir Java bloķēšanas rindas saskarne?
Java bloķēšanas rindas saskarne ir rinda, kas tiek bloķēta, mēģinot no tās atbrīvoties un rinda ir tukša vai ja mēģināt tajā ievietot vienumus un rinda jau ir pilna. Vītne, kas mēģina noņemt no tukšas rindas, tiek bloķēta, līdz kāds cits pavediens ievieto vienumu rindā. Vītne, kas mēģina ievietot vienumu pilnā rindā, tiek bloķēta, līdz kāds cits pavediens atbrīvo vietu rindā, vai nu noņemot vienu vai vairākus vienumus, vai arī pilnībā notīrot rindu.
Java bloķēšanas rindas interfeiss netiek pieņemtsnullevērtības un metiensNullPointerExceptionja mēģināt rindā saglabāt nulles vērtību.Java bloķēšanas rindas ieviešana ir drošs ar diegu . Visas rindas metodes ir atomu rakstura un izmanto iekšējās slēdzenes vai citus vienlaicīguma kontroles veidus.
Java rindas klases diagramma
Java rindas interfeiss paplašina kolekcijas saskarni. Kolekcijas interfeiss paplašina interfeisu Iterable. Dažas no bieži izmantotajām rindas ieviešanas klasēm ir LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,utt. AbstractQueue nodrošina rindas saskarnes skeleta ieviešanu, lai samazinātu piepūli rindas ieviešanā.
BlockingQueue Types
Bloķēšanas rinda ir divu veidu:
kā izveidot saistīto sarakstu c
- Neierobežota rinda: Bloķēšanas rindas ietilpība tiks iestatīta uz Integer.MAX_VALUE. Neierobežotas bloķēšanas rindas gadījumā rinda nekad netiks bloķēta, jo tā varētu izaugt līdz ļoti lielam. pievienojot elementus, tā izmērs pieaug.
Sintakse:
BlockingQueue bloķēšanas rinda = new LinkedBlockingDeque ()
- Ierobežota rinda: Otrais rindas veids ir ierobežotā rinda. Ierobežotās rindas gadījumā jūs varat izveidot rindu, apejot rindas kapacitāti rindu konstruktorā:
Sintakse:
// Izveido bloķēšanas rindu ar ietilpību 5
BlockingQueue bloķēšanas rinda = new LinkedBlockingDeque (5)
Metodes BlockingQueue saskarnē
Mainīt veidu | Metodes sintakse | Izmanto | Apraksts |
būla | pievienot (E un) | Ievietošana | Ievieto norādīto elementu šajā rindā, ja to ir iespējams izdarīt nekavējoties, nepārkāpjot jaudas ierobežojumus, atgriežoties pie panākumiem un izsniedzot IllegalStateException, ja pašlaik nav vietas. |
būla | satur (Object o) | Pārbaudiet | Atgriež vērtību true, ja šajā rindā ir norādītais elements. |
int | drainTo (kolekcija c) | Ielādēšana vai noņemšana | No šīs rindas noņem visus pieejamos elementus un pievieno tos dotajai kolekcijai. |
int | drainTo (kolekcija c, int maxElements) | Ielādēšana vai noņemšana | No šīs rindas noņem ne vairāk kā norādīto pieejamo elementu skaitu un pievieno tos dotajai kolekcijai. |
būla | piedāvājums (E un) | Ievietošana | Ievieto norādīto elementu šajā rindā, ja to ir iespējams izdarīt uzreiz, nepārkāpjot jaudas ierobežojumus, atgriežoties patiesu pēc panākumiem un nepatiesu, ja pašlaik nav vietas. |
būla | piedāvājums (E e, garš noildze, TimeUnit vienība) | Ievietošana | Ievieto norādīto elementu šajā rindā, gaidot noteikto gaidīšanas laiku, ja nepieciešams, lai vieta kļūtu pieejama. izveidojiet saistīto sarakstu c |
IS | aptauja (ilgs noildze, TimeUnit vienība) | Ielādēšana vai noņemšana | Izgūst un noņem šīs rindas galviņu, vajadzības gadījumā gaidot līdz norādītajam gaidīšanas laikam, līdz elements kļūst pieejams. |
spēkā neesošs | likt (E e) | Ievietošana | Šajā rindā ievieto norādīto elementu, gaidot, ja nepieciešams, līdz būs pieejama vieta. |
int | atlikusī jauda () | Pārbaudiet | Atgriež to papildu elementu skaitu, kurus šī rinda ideālā gadījumā (ja nav atmiņas vai resursu ierobežojumu) var pieņemt bez bloķēšanas, vai Integer.MAX_VALUE, ja nav iekšējā ierobežojuma. |
būla | noņemt (Object o) + | Ielādēšana vai noņemšana | No šīs rindas tiek noņemts viens norādītā elementa gadījums,ja tas ir klāt. |
IS | ņemt () | Ielādēšana vai noņemšana | Izgūst un noņem šīs rindas galviņu, vajadzības gadījumā gaidot, līdz kļūst pieejams elements. |
BlockingQueue saskarne Java piemērā: Pakalpojums
pakete com.journaldev.concurrency importēt java.util.concurrent.ArrayBlockingQueue importēt java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// BlockingQueue of size 10 blockingQueue quayue (new Array) izveide 10) Ražotāja ražotājs = jauns Ražotājs (rinda) Patērētāja patērētājs = jauns Patērētājs (rinda) // ražotājs, kas sāk ziņojumus rindā, jauns pavediens (ražotājs). Sākums () .start () System.out.println ('Ražotājs un patērētājs ir sākts')}}
datu struktūras un algoritmi Java
Ar to mēs esam nonākuši līdz BlockingQueue interfeisa beigām Java rakstā. Es ceru, ka visi jūsu jēdzieni tagad ir skaidri.
Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums iespēju sākt Java programmēšanu un apmācīt gan Java, gan uzlabotas koncepcijas, kā arī dažādas Java struktūras, piemēram, Hibernate & Spring.
Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra “BlockingQueue Interface in Java” komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.