Шта је БлоцкингКуеуе у Јави и како га применити?



Овај чланак о БлоцкингКуеуе у Јави помоћи ће вам да сазнате више о интерфејсу БлоцкингКуеуе. Такође ће вам дати увид у његове методе и практичну примену

је изузетно популаран међу програмерима због свог широког спектра уграђених функција. Већину пута ћете имати наменско решење за свој проблем и пре него што се појави. Тако изузетно користан и важан део је интерфејс БлоцкингКуеуе у Јави. Кроз медиј овог чланка бацићу светло на БлоцкингКуеуе у Јави и методе за његову примену.

Испод су теме обухваћене овим чланком:





Интерфејс БлоцкингКуеуе у Јави

БлоцкингКуеуе у Јави је интерфејс који је додан у Јави 1.5 заједно са неколико других истовремених класа услужних програма попут ЦонцуррентХасхМап, ЦопиОнВритеАррраиЛист, итд. Интерфејс БлоцкингКуеуе припада јава.утил.цонцуррент пакет .Овај интерфејс побољшава контролу протока активирањем блокирања, у случају да нит покушава да избаци из празног реда у редослед или у цео ред. У оба случаја овај интерфејс добро дође.Једноставније речено, претпоставимо а покушава да дода елементе у већ пун редослед. У овом тренутку у програму ће се позвати БлоцкингКуеуе који ће блокирати ту одређену нит док друга нит не ослободи ред да би направила простор. То може бити резултат уклањања редова елемената за чишћење целог реда. Слично томе, БлоцкингКуеуе ће се позивати да блокира нит која покушава да декуеуе већ празан ред док се нека друга нит не убаци или дода елемент у празно ред .

како започети авс цли

Док радите са интерфејсом БлоцкингКуеуе у Јави, морате имати на уму да не прихвата нулл вредност. У случају да то покушате, одмах ће бацити НуллПоинтерЕкцептион. Доња слика представља рад интерфејса БлоцкингКуеуе у Јави.



БлоцкингКуеуе - БлоцкингКуеуе у Јави - ЕдурекаОво приступ углавном се користи између произвођача и потрошача, јер је заштићен од навоја.Оно што мислим је да се интерфејс БлоцкингКуеуе може користити за стварање реда који могу делити и произвођач и потрошач

Да бисте могли да радите са БлоцкингКуеуе у Јави, прво морате да се упознате са његовим типовима. Упознаћу их са њима у следећем одељку овог чланка.

Типови конструктора за БлоцкингКуеуе у Јави

Постоје две врсте конструктора за интерфејс БлоцкингКуеуе у Јави:



  • Неограничени ред: За ову врсту реда капацитет ће бити постављен на Интегер.МАКС_ВАЛУЕ. Неограничени ред се никада неће блокирати, јер може динамички расти сваки пут када се у њега убаци елемент. Испод је синтакса за стварање неограниченог реда:
БлоцкингКуеуе бк = нови ЛинкедБлоцкингДекуе ()
  • Ограничени ред: За ову врсту реда морате проћи капацитет реда у тренутку његовог стварања, тј. Као градитељ параметар. Једном када је величина додељена, не може се променити. Испод је синтакса за стварање ограниченог реда:
БлоцкингКуеуе бк = нови ЛинкедБлоцкингДекуе (10)

Сада када сте упознати са начинима примене БлоцкингКуеуе у Јави, дозволите ми да набројим неколико његових метода.

Методе у интерфејсу БлоцкингКуеуе

Метод Опис
логички додатак (Е е) Овај метод помаже у уметању наведеног елемента у овај ред ако има простора у реду, иначе ће битибаци анИллегалСтатеЕкцептион
боолеан садржи (објекат о) Ова метода враћа труе ако ред садржи наведени елемент
инт драинТо (Колекција ц) Овај метод ће уклонити све доступне елементе из реда и додати их у наведену колекцију
инт драинТо (Колекција ц, инт макЕлементс) Ова метода ће уклонити дати број доступних елемената из реда и додати их у наведени
боолоеан понуда (Е е) Ова метода ће уметнути наведени елемент у ред ако није пун и вратиће труе, у супротном ће вратити фалсе
логичка понуда (Е е, дуго истек, јединица временске јединице) Овај метод ће уметнути наведени елемент у ред. У случају да је ред пун, сачекаће до одређеног времена чекања да простор постане доступан.
Е анкета (дуго време чекања, јединица временске јединице) Овај метод помаже у проналажењу и уклањању главе реда. У случају да је ред празан, сачекат ће до одређеног времена чекања да елемент постане доступан
празнина (Е е) Овај метод ће уметнути наведени елемент у ред чекањем да простор постане доступан н у случају да је ред пун
инт преостали капацитет () Овај метод помаже у враћању броја додатних елемената које овај ред идеално може прихватити без блокирања
логичко уклањање (објекат о) Овај метод ће уклонити једну инстанцу наведеног елемента из реда само ако је присутан
Узми () Овај метод ће помоћи у проналажењу и уклањању главе реда чекањем да елемент постане доступан, у случају да је ред празан.

Имплементације БлоцкингКуеуе

Овде ћу применити једноставан пример БлоцкингКуеуе у Јави гдекласа ЕдуПродуцер ће генерирати податке и уметнути их у ред , истовремено, друга класа, ЕдуЦонсумер ће уклонити податке из истог реда.

За ово ћу створити 3 класе и то:

  1. ЕдуПродуцер
  2. ЕдуЦонсумер
  3. ЕдурекаМаин

Креирајмо сада сваки од ових разреда један по један.

ЕдуПродуцер.јава

једноставан увод у науку о подацима
пакет едурека импорт јава.утил.цонцуррент.БлоцкингКуеуе јавна класа ЕдуПродуцер имплементира Руннабле {привате финал БлоцкингКуеуе куеуе @Оверриде публиц воид рун () {три {процесс ()} цатцх (ИнтерруптедЕкцептион е) {Тхреад.цуррентТхреад (). интеррупт ()} } привате воид процесс () баца ИнтерруптедЕкцептион {// Стави 10 интова у Ред за (инт и = 0 и<10 i++) { System.out.println('[Producer] Add : ' + i) queue.put(i) System.out.println('[Producer] Queue's Remaining Capacity : ' + queue.remainingCapacity()) Thread.sleep(150) } } public EduProducer(BlockingQueue queue) { this.queue = queue } }

ЕдуЦонсумер.јава

пакет едурека импорт јава.утил.цонцуррент.БлоцкингКуеуе јавна класа ЕдуЦонсумер имплементира Руннабле {привате финал БлоцкингКуеуе куеуе @Оверриде публиц воид рун () {три {вхиле (труе) {Интегер таке = куеуе.таке () процесс (таке)}} цатцх (ИнтерруптедЕкцептион е) {Тхреад.цуррентТхреад (). Интеррупт ()}} приватни воид поступак (Интегер таке) баца ИнтерруптедЕкцептион {Систем.оут.принтлн ('[Цонсумер] Ремове:' + таке) Тхреад.слееп (500)} јавни ЕдуЦонсумер (БлоцкингКуеуе куеуе) {тхис.куеуе = куеуе}}

ЕдурекаМаин.јава

пакет едурека импорт јава.утил.цонцуррент.БлоцкингКуеуе импорт јава.утил.цонцуррент.ЛинкедБлоцкингКуеуе јавна класа ЕдурекаМаин {публиц статиц воид маин (Стринг [] аргс) {БлоцкингКуеуе куеуе = нев ЛинкедБлоцкингКуеуе (10) нев Тхреад (нев ЕдуПродуцер (куеуе) .старт () нова нит (нова ЕдуЦонсумер (ред)). старт ()}}

Када завршите са писањем кода, покрените програм да бисте добили доњи излаз:

шта је пакет у јави
[Произвођач] Додај: 0 [Потрошач] Узми: 0 [Произвођач] Преостали капацитет реда: 9 [Произвођач] Додај: 1 [Произвођач] Преостали капацитет реда: 9 [Произвођач] Додај: 2 [Произвођач] Преостали капацитет реда: 8 [Произвођач ] Додати: 3 [преостали капацитет произвођача]: 7 [потрошач] узети: 1 [произвођач] додати: 4 „преостали капацитет [произвођача] реда: 7 [произвођач] додати: 5 [произвођач] преостали капацитет реда: 6 [произвођач] додати“ : 6 [Преостали капацитет редова произвођача]: 5 [Потрошач] Узми: 2 [Произвођач] Додај: 7 Преостали капацитет реда „Редослед“: 5 [Произвођач] Додај: 8 [Произвођач] Преостали капацитет реда: 4 [Произвођач] Додај: 9 [Произвођач] Преостали капацитет реда: 3 [Потрошач] Узми: 3 [Потрошач] Узми: 4 [Потрошач] Узми: 5 [Потрошач] Узми: 6 [Потрошач] Узми: 7 [Потрошач] Узми: 8 [Потрошач] Узми: 9

Ово нас доводи до краја овог чланка о БлоцкингКуеуе у Јави. Ако желите детаљније научити Јаву, можете се обратити нашој такође.

Сада када сте разумели основе БлоцкингКуеуе у Јави, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је за студенте и професионалце који желе да буду Јава програмери. Курс је дизајниран да вам пружи почетну предност у Јава програмирању и обучи вас како за основне тако и за напредне Јава концепте, заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га помињете у одељку за коментаре овог „БлоцкингКуеуе у Јави“ и јавићемо вам се што је пре могуће.