Kaip įdiegti „BlockingQueue“ sąsają „Java“



Šis straipsnis suteiks jums išsamių ir išsamių žinių, kaip įdiegti „BlockingQueue“ sąsają „Java“.

Eilė yra svarbus bet kurios programavimo kalbos aspektas. Ypač jei apie tai kalbėsime . Šiame straipsnyje aptarsime „BlockingQueue“ sąsają „Java“ tokia tvarka:

Kas yra „BlockingQueue“ sąsaja „Java“?

„BlockingQueue“ sąsaja „Java“ yra eilė, blokuojanti, kai bandote ją pašalinti, o eilė yra tuščia, arba jei bandote į ją įtraukti elementus ir eilė jau pilna. Siūlas, bandantis pašalinti iš tuščios eilės, užblokuojamas, kol kitas eilutė įterpia elementą į eilę. Siūlas, bandantis surašyti elementą visoje eilėje, užblokuojamas, kol kuris nors kitas siūlas padarys vietą eilėje, pašalindamas vieną ar daugiau elementų arba visiškai išvalydamas eilę.



prioritetinė eilė c ++

„BlockingQueue“ sąsaja „Java“ nepriimaniekinisvertybes ir mesti„NullPointerException“jei bandysite eilėje įrašyti nulinę vertę.„Java BlockingQueue“ diegimai yra siūlai saugūs . Visi eilės metodai yra atominio pobūdžio ir juose naudojami vidiniai užraktai ar kitos lygiagretumo kontrolės formos.



„Java Queue“ klasės schema

„Java Queue“ sąsaja išplečia kolekcijos sąsają. Kolekcijos sąsaja išplečia „Iterable“ sąsają. Kai kurios dažniausiai naudojamos eilės diegimo klasės yra „LinkedList“, „PriorityQueue“, „ArrayBlockingQueue“, „DelayQueue“, „LinkedBlockingQueue“, „PriorityBlockingQueue“,ir tt .. „AbstractQueue“ suteikia „Queue“ sąsajos pagrindinį įgyvendinimą, kad būtų sumažintos pastangos įgyvendinant „Queue“.

Blokavimo eilės tipai

„BlockingQueue“ yra dviejų tipų:



  • Neribota eilė: Blokavimo eilės talpa bus nustatyta kaip Sveikasis skaičius.MAX_VALUE. Neribotos blokavimo eilės atveju eilė niekada neblokuos, nes ji gali išaugti iki labai didelio dydžio. kai pridedate elementų, jo dydis auga.

Sintaksė:
Blokavimo eilės blokavimo eilė = nauja „LinkedBlockingDeque“ ()

  • Apribota eilė: Antrasis eilės tipas yra ribota eilė. Ribotos eilės atveju galite sukurti eilę apeinant eilės talpą eilių konstruktoriuje:
    Sintaksė:
    // Sukuria 5 talpos blokavimo eilę

Blokavimo eilės blokavimo eilė = nauja „LinkedBlockingDeque“ (5)

„BlockingQueue“ sąsajos metodai

Keisti tipą Metodo sintaksė Naudojama apibūdinimas
loginis pridėti (E ir) Įterpimas

Įterpia nurodytą elementą į šią eilę, jei tai įmanoma padaryti nedelsiant nepažeidžiant pajėgumų apribojimų, grąžinant teisingumą po sėkmės ir neišmetant „IllegalStateException“, jei šiuo metu nėra vietos.

loginis yra (objektas o) Nagrinėk

Grąžina tiesą, jei šioje eilėje yra nurodytas elementas.

tarpt nutekėti (c kolekcija) Gaunama arba pašalinama

Pašalina visus galimus elementus iš šios eilės ir prideda juos prie pateiktos kolekcijos.

tarpt drainTo (c rinkinys, int maxElements) Gaunama arba pašalinama

Iš šios eilės pašalinamas daugiausia nurodytas galimų elementų skaičius ir įtraukiama į pateiktą kolekciją.

loginis pasiūlymas (E ir) Įterpimas

Nurodytą elementą įterpia į šią eilę, jei tai įmanoma padaryti nedelsiant nepažeidžiant talpos apribojimų, grąžinant reikšmę „true“ po sėkmės ir „false“, jei šiuo metu nėra vietos.

loginis pasiūlymas (E, ilgasis skirtasis laikas, „TimeUnit“ vienetas) Įterpimas

Įterpia nurodytą elementą į šią eilę, laukdamas nurodyto laukimo laiko, jei reikia, kol atsiras vietos.

IS apklausa (ilgasis skirtasis laikas, „TimeUnit“ vienetas) Gaunama arba pašalinama

Gauna ir pašalina šios eilės galvą, laukdamas nurodyto laukimo laiko, jei reikia, kad elementas būtų pasiekiamas.

tuštuma įdėti (E e) Įterpimas

Įterpia nurodytą elementą į šią eilę, laukdamas, jei reikia, kol atsiras vietos.

tarpt likęs pajėgumas () Nagrinėk

Grąžina papildomų elementų, kuriuos ši eilė idealiu atveju (jei nėra atminties ar išteklių apribojimų) priima be blokavimo, skaičių arba Sveikasis skaičius.MAX_VALUE, jei nėra vidinės ribos.

loginis pašalinti (objektas o) + Gaunama arba pašalinama

Pašalina vieną nurodyto elemento egzempliorių iš šios eilės,jei jis yra.

kurie iš šių pavyzdžių yra kontrolės teiginiai?
IS imti () Gaunama arba pašalinama

Gauna ir pašalina šios eilės galvą, prireikus laukdamas, kol bus pasiekiamas elementas.

„BlockingQueue“ sąsaja „Java“ pavyzdyje: paslauga

paketas com.journaldev.concurrency importuoti java.util.concurrent.ArrayBlockingQueue importuoti java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// 10 dydžio blokavimo eilės sukūrimas BlockingQueue quayue = new Array 10) Gamintojo gamintojas = naujas Gamintojas (eilė) Vartotojo vartotojas = naujas Vartotojas (eilė) // pradinis gamintojas, kuris gamina pranešimus eilėje naujas „Thread“ (gamintojas). Pradžia () // pradedantis vartotojas vartoti pranešimus iš eilės „New Thread“ (vartotojas) .start () System.out.println ('Gamintojas ir vartotojas buvo paleisti')}}

Tuo mes baigėme „Java“ straipsnio „BlockingQueue“ sąsają. Tikiuosi, kad visos jūsų sąvokos yra aiškios.

Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti studentams ir profesionalams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindines ir pažangesnes „Java“ koncepcijas kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio „BlockingQueue Interface in Java“ tinklaraščio komentarų skyriuje, ir mes kuo greičiau susisieksime su jumis.