Paano Ipapatupad ang BlockingQueue Interface sa Java



Magbibigay sa iyo ang artikulong ito ng isang detalyado at komprehensibong kaalaman kung paano ipatupad ang isang BlockingQueue Interface sa Java.

Ang pila ay isang mahalagang aspeto ng anumang wika ng Programming. Lalo na kung pag-uusapan natin . Sa artikulong ito, tatalakayin namin ang BlockingQueue Interface sa Java sa sumusunod na pagkakasunud-sunod:

Ano ang isang BlockingQueue Interface sa Java?

Ang isang BlockingQueue Interface sa Java ay isang pila na humahadlang kapag sinubukan mong mag-dequeue mula dito at ang pila ay walang laman, o kung susubukan mong ipataw ang mga item dito at ang pila ay puno na. Ang isang thread na sinusubukang mag-dequeue mula sa isang walang laman na pila ay naharang hanggang sa ilang iba pang mga thread na nagsingit ng isang item sa pila. Ang isang thread na sumusubok na magpatik ng isang item sa isang buong pila ay na-block hanggang sa ang ilang iba pang mga thread ay gumawa ng puwang sa pila, alinman sa pamamagitan ng pag-dequeu ng isa o higit pang mga item o ganap na pag-clear ng pila.





ano ang logger sa java

priyoridad na pila sa c ++

Hindi tumatanggap ang BlockingQueue Interface sa Javawalahalaga at itaponNullPointerExceptionkung susubukan mong itabi ang null na halaga sa pila.Ang pagpapatupad ng Java BlockingQueue ay ligtas na sinulid . Ang lahat ng mga pamamaraan ng pila ay likas na atomiko at gumagamit ng panloob na mga kandado o iba pang mga paraan ng kontrol sa pagsabay.



Java Queue Class Diagram

Ang Java Queue interface ay nagpapalawak ng interface ng Koleksyon. Ang interface ng Koleksyon ay nagpapalawak ng interface ng Iterable. Ang ilan sa mga madalas na ginagamit na mga klase sa pagpapatupad ng pila ay LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,atbp .. Ang AbstractQueue ay nagbibigay ng isang kalansay ng pagpapatupad ng interface ng Queue upang mabawasan ang pagsisikap sa pagpapatupad ng Queue.

Mga Uri ng BlockingQueue

Ang BlockingQueue ay dalawang uri:



  • Walang limitasyong pila: Ang Kapasidad ng pila sa pag-block ay itatakda sa Integer.MAX_VALUE. Sa kaso ng walang limitasyong pila sa pag-block, ang pila ay hindi kailanman hahadlangan dahil maaari itong lumaki sa isang napakalaking sukat. kapag nagdagdag ka ng mga elemento lumalaki ang laki.

Syntax:
BlockingQueue na pag-block ng pila = bagong LinkedBlockingDeque ()

  • May limitadong pila: Ang pangalawang uri ng pila ay ang hangganan na pila. Sa kaso ng may hangganan na pila maaari kang lumikha ng isang pila sa pamamagitan ng pag-bypass sa kapasidad ng pila sa konstruksyon ng pila:
    Syntax:
    // Lumilikha ng isang Blocking Queue na may kapasidad 5

BlockingQueue na pag-block ng pila = bagong LinkedBlockingDeque (5)

Mga pamamaraan sa BlockingQueue Interface

Baguhin ang Uri Syntax ng Paraan Ginagamit para sa Paglalarawan
boolean idagdag (E at) Pagpasok

Ipasok ang tinukoy na elemento sa pila na ito kung posible na gawin ito kaagad nang hindi lumalabag sa mga paghihigpit sa kapasidad, bumalik nang totoo sa tagumpay at magtapon ng isang IllegalStateException kung walang puwang na kasalukuyang magagamit.

boolean naglalaman ng (Bagay o) Suriin

Nagbabalik totoo kung naglalaman ang pila na ito ng tinukoy na elemento.

int drainTo (Koleksyon c) Pagkuha o Pag-alis

Tinatanggal ang lahat ng mga magagamit na elemento mula sa pila na ito at idinagdag ang mga ito sa ibinigay na koleksyon.

int drainTo (Koleksyon c, int maxElemen) Pagkuha o Pag-alis

Inaalis ang halos lahat ng ibinigay na bilang ng mga magagamit na elemento mula sa pila na ito at idinagdag ang mga ito sa ibinigay na koleksyon.

kung paano lumikha ng isang hanay ng mga bagay
boolean alok (E at) Pagpasok

Ipasok ang tinukoy na elemento sa pila na ito kung posible na gawin ito kaagad nang hindi lumalabag sa mga paghihigpit sa kapasidad, bumalik nang totoo sa tagumpay at hindi totoo kung walang puwang na kasalukuyang magagamit.

boolean alok (E e, mahabang oras ng pag-timeout, yunit ng TimeUnit) Pagpasok

Ipasok ang tinukoy na elemento sa queue na ito, naghihintay ng hanggang sa tinukoy na oras ng paghihintay kung kinakailangan para magamit ang puwang.

AY poll (mahabang oras ng pag-timeout, yunit ng TimeUnit) Pagkuha o Pag-alis

Kinukuha at tinatanggal ang pinuno ng pila na ito, naghihintay ng hanggang sa tinukoy na oras ng paghihintay kung kinakailangan para sa isang sangkap na magagamit.

walang bisa ilagay (E e) Pagpasok

Ipasok ang tinukoy na elemento sa pila na ito, naghihintay kung kinakailangan para sa puwang na magagamit.

int natitirang kapasidad () Suriin

Ibinabalik ang bilang ng mga karagdagang elemento na maaaring may perpektong ideyang ito (sa kawalan ng hadlang sa memorya o mapagkukunan) nang walang pag-block, o Integer.MAX_VALUE kung walang limitasyong intrinsic.

boolean alisin (Object o) + Pagkuha o Pag-alis

Inaalis ang isang solong halimbawa ng tinukoy na elemento mula sa pila na ito,kung ito ay naroroon.

AY kunin () Pagkuha o Pag-alis

Kinukuha at inaalis ang ulo ng pila na ito, naghihintay kung kinakailangan hanggang sa maging magagamit ang isang elemento.

BlockingQueue Interface sa Java Halimbawa: Serbisyo

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Paglikha ng BlockingQueue ng laki ng 10 BlockingQueue pila = bagong ArueBlock 10) Producer producer = bagong Producer (pila) Consumer consumer = bagong Consumer (pila) // panimulang prodyuser upang makabuo ng mga mensahe sa pila bagong Thread (prodyuser) .start () // pagsisimula sa consumer na ubusin ang mga mensahe mula sa pila bagong Thread (consumer) .start () System.out.println ('Sinimulan ang Producer at Consumer')}}

kung paano lumikha ng dashboard sa lakas bi

Sa pamamagitan nito, natapos namin ang artikulong BlockingQueue Interface sa Java. Inaasahan kong ang lahat ng iyong mga konsepto ay malinaw na ngayon.

Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer. Ang kurso ay dinisenyo upang bigyan ka ng isang panimula sa pag-program ng Java at sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'BlockingQueue Interface in Java' na blog at babalikan ka namin sa lalong madaling panahon.