Како применити интерфејс који се може позивати у Јави



Овај чланак ће вам пружити детаљно и свеобухватно знање о примени Цаллабле Интерфаце-а у Јави са примерима.

Јава мултитхреадинг програми сведоче о употреби опсежних Позовљиво и будућност. Под предусловом познавања нити и вишеструког навоја, читаоци ће моћи боље да схвате дискусију у овом чланку. Као што ћу објаснити Цаллабле Интерфаце у Јави у овом чланку.

Укратко о нитима

Међутим, дозволите ми само да дам кратак увод у појам нити. Нит је одвојена путања извршења, у случају да треба да извршите задатак који се понавља, рад се може разбити на више задатака и доделити нитима. Вишеструки навојније ништа друго него додељивање више нити за паралелно извршавање различитих задатака како би се брзо добио резултат.





Шта је позивни интерфејс у ​​Јави

За Јаву 5 представљена је класа „јава.утил.цонцуррент“. Овај интерфејс који се може позвати је уведен преко паралелног пакета који је изгледао слично интерфејсу за покретање. Такође може да врати било који објекат и може да избаци изузетак. Јава Цаллабле интерфејс користи генеричке, што омогућава враћање било које врсте објекта. Извршни оквир даје методу субмит () за извршавање Цаллабле имплементација у скупу нити. У стварности, Јава Екецутор Фрамеворк се придржава образаца ВоркерТхреад.

java-interfaceУ спремишту нити корисници могу покренути нити помоћу методе Екецуторс.невФикедТхреадПоол (10) и сходно томе му предати задатак. Изводљиви се понаша као циљ нити, а јавна воид метода рун () се обавезно имплементира за дефинисање задатка. Ово ће извршити нити у спремишту нити. На основу доступности нити у спремишту, извршни оквир додељује нити (циљ који се може покренути) нитима.Ако се користе све нити, задатак мора бити заустављен. Након што нит доврши један задатак, враћа се у спремиште као доступна нит која је спремна да прихвати будуће задатке. Цаллабле је сличан Руннабле-у и може вратити било коју врсту објекта када желимо да добијемо резултат или статус задатка.



шта је променљива инстанце

Повратак интерфејса који се може позвати

Јава Цаллабле враћа јава.утил.цонцуррент. Јава Футуре нуди методу цанцел () за уклањање повезаног задатка Цаллабле. Ово је преоптерећена верзија методе гет (), где се може одредити одређено време чекања резултата. Корисно је избећи тренутну нит која може бити блокирана на дужи период. Имајте на уму да је метода гет синхрона метода и док позиви не заврши свој задатак и не врати вредност, мораће да сачека позивање.

Постоје и методе „исДоне ()“ и „исЦанцеллед ()“ за преузимање тренутног статуса повезаног задатка који се може позвати. Размотримо пример где треба наћи збир свих бројева од један до 100. Можемо петљу од 1 до 100 узастопно и коначно их додати. Друга могућност је подела и освајање. Овом методом можемо бројеве груписати на начин да свака група има тачно два елемента. Коначно, можемо ту групу доделити скупу нити. Према томе, свака нит паралелно враћа делимични збир, а затим прикупља те делимичне суме и додаје их да би се добила цела сума.



Карактеристике позивне и будуће класе

  • Класа Цаллабле је интерфејс типа САМ и стога се може применити у ламбда изразу.

  • Класа која се може позвати има само један метод „цалл ()“ који садржи сав код потребан за асинхроно извршавање.

    спајање сортирај ц ++ код
  • У окружењу интерфејса које је могуће покренути, није било могућности да се врате резултат израчунавања или да се избаци изузетак. Док је са Цаллабле-ом враћање вредности и бацање означеног изузетка доступно.

  • Метода Гет () класе Футуре може се користити за проналажење резултата након завршетка израчунавања. Корисници такође могу да провере да ли је израчунавање завршено или не помоћу методе доне ().

  • Отказивање израчунавања помоћу методе футуре.цанцел () такође је благодат у неким апликацијама.

  • Гет () назива се позивом за блокирање и наставља да блокира док се израчунавање не заврши.

Поређење класа које се могу позивати и које се могу трчати

Цаллабле Руннабле
То је део „ јава.утил.цонцуррент ' пакет од Јаве 1.5Део је пакета јава.ланг од Јаве 1.0
Параметарски интерфејс, као што је ЦаллаблеНепараметризовани интерфејс
Способан да баци проверени изузетакНе може да избаци потврђени изузетак
Садржи једну методу, цалл (), која враћа тип В, ​​то је исто као дефинисани параметар интерфејса „Типе“Овде садржи једну методу, названу рун (), која враћа воид

Испод је представљен једноставан пример Јава позване класе која је имплементирана где код враћа име одређене нити која извршава задатак након једне секунде. Овде користимо екстракторски оквир за извршавање 100 задатака паралелно са Јава Футуре до резултата предатих задатака. Први исечак је излаз, а доњи представља код.

пакет цом.јоурналдев.тхреадс импорт јава.утил.АрраиЛист импорт јава.утил.Дате импорт јава.утил.Лист импорт јава.утил.цонцуррент.Цаллабле импорт јава.утил.цонцуррент.ЕкецутионЕкцептион импорт јава.утил.цонцуррент.ЕкецуторСервице импорт јава.утил.цонцуррент.ЕкецуторСервице .утил.цонцуррент.Екецуторс импорт јава.утил.цонцуррент.Футуре јавна класа МиЦаллабле имплементира Цаллабле {@Оверриде публиц Стринг цалл () баца изузетак {Тхреад.слееп (1000) // врати име нити које извршава овај позивни задатак ретурн Тхреад.цуррентТхреад () .гетНаме ()} публиц статиц воид маин (Стринг аргс []) {// Набавите ЕкецуторСервице из класе помоћних програма Екецуторс, величина спремишта нити је 10 ЕкецуторСервице екецутор = Екецуторс.невФикедТхреадПоол (10) // креирајте листу која ће садржати Будућност објекат повезан са пописом позивалист = нови АрраиЛист() // Направите инстанцу МиЦаллабле Цаллабле цаллабле = нев МиЦаллабле () фор (инт и = 0 и<100 i++){ //submit Callable tasks to be executed by thread pool Future future = executor.submit(callable) //add Future to the list, we can get return value using Future list.add(future) } for(Future fut : list){ try { //print the return value of Future, notice the output delay in console // because Future.get() waits for task to get completed System.out.println(new Date()+ '::'+fut.get()) } catch (InterruptedException | ExecutionException e) { e.printStackTrace() } } //shut down the executor service now executor.shutdown() } } 

Искључивање извршних служби

Кључни и важан аспект који недостаје многим програмерима је гашење ЕкецуторСервице. ЕкецуторСервице је од виталног значаја и креира се са додатним елементима нити. Имајте на уму да се ЈВМ зауставља само када су заустављене све не-демонске нити. Стога једноставно искључивање извршне службе спречава ЈВМ да се заустави.

за шта се користи монгодб

Да бисмо рекли извршној служби да нема потребе за покретањем нити, требали бисмо угасити услугу.

Постоје три начина за активирање искључивања:

  • воид схутдовн () - Ово покреће уредно заустављање у којем се извршавају претходно предати задаци, али нови задаци се не прихватају.
  • Листа схутдовнНов () - Покушава зауставити све активно извршавање задатака, зауставља обраду задатака на чекању, а такође враћа листу задатака који су чекали извршење.
  • воид аваитТерминатион () - Ово се наставља блокирати док сви задаци не заврше извршење након захтева за искључење или док не дође до временског ограничења. Такође блокира када је тренутна нит прекинута. Све зависи од тога који задатак је први.

Овим смо дошли до краја чланка Цаллабле Интерфаце у Јави. Надам се да сте разумели будући и позивни интерфејс у ​​Јави.

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

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