Kā ieviest BlockingQueue saskarni Java



Šis raksts sniegs jums detalizētas un visaptverošas zināšanas par to, kā Java ieviest BlockingQueue saskarni.

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?

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.





prioritārā rinda c ++

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.