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?
- Mga Uri ng BlockingQueue
- Mga pamamaraan sa BlockingQueue Interface
- BlockingQueue Interface sa Java Halimbawa: Serbisyo
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
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.