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“?
- Blokavimo eilės tipai
- „BlockingQueue“ sąsajos metodai
- „BlockingQueue“ sąsaja „Java“ pavyzdyje: paslauga
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ę.
„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.