జావాలో ఎగ్జిక్యూటర్ సర్వీస్ అంటే ఏమిటి మరియు దానిని ఎలా సృష్టించాలి?



ఈ వ్యాసం జావాలో ఎగ్జిక్యూటర్ సబ్-ఇంటర్ఫేస్ ఎగ్జిక్యూటర్ సర్వీస్ యొక్క భావనను జావాలో థ్రెడ్ సృష్టి మరియు నిర్వహణను వివరించడానికి వివిధ ఉదాహరణలతో వివరిస్తుంది.

జావా ప్రోగ్రామింగ్ భాష చాలా సమర్థవంతంగా పనిచేస్తుంది పనులను థ్రెడ్‌లో ఏకకాలంలో అమలు చేయాల్సిన అనువర్తనాలు. ఏ అప్లికేషన్ అయినా ఒకేసారి పెద్ద సంఖ్యలో థ్రెడ్లను అమలు చేయడం కష్టం అవుతుంది. కాబట్టి ఈ సమస్యను అధిగమించడానికి, ఎగ్జిక్యూటర్ సర్వీసుతో వస్తుంది, ఇది ఉప-ఇంటర్ఫేస్ . ఈ వ్యాసంలో, మేము జావాలో ఎగ్జిక్యూటర్ సర్వీస్ యొక్క కార్యాచరణ గురించి చర్చిస్తాము. ఈ బ్లాగులో పొందుపరచబడిన విషయాలు క్రిందివి:

ఎగ్జిక్యూటర్ ఫ్రేమ్‌వర్క్ అంటే ఏమిటి?

ఒకేసారి ఒకటి లేదా రెండు థ్రెడ్లను తయారు చేయడం మరియు అమలు చేయడం చాలా సులభం. థ్రెడ్ల సంఖ్య గణనీయమైన సంఖ్యకు పెరిగినప్పుడు అది కష్టమవుతుంది. పెద్ద బహుళ-థ్రెడ్ అనువర్తనాలు ఒకేసారి వందలాది థ్రెడ్‌లను కలిగి ఉంటాయి. అందువల్ల ఒక అనువర్తనంలో థ్రెడ్ నిర్వహణ నుండి థ్రెడ్ సృష్టిని వేరు చేయడం పూర్తి అర్ధమే.





కార్యనిర్వాహకుడు a అనువర్తనంలో థ్రెడ్‌లను సృష్టించడానికి మరియు నిర్వహించడానికి మీకు సహాయపడుతుంది. ది కింది పనులలో మీకు సహాయపడుతుంది.

  • థ్రెడ్ సృష్టి: ఇది మీ అనువర్తనాలను ఏకకాలంలో అమలు చేయడంలో సహాయపడే థ్రెడ్ల సృష్టి కోసం వివిధ పద్ధతులను అందిస్తుంది.



  • థ్రెడ్ నిర్వహణ: ఇది థ్రెడ్ జీవిత చక్రాన్ని కూడా నిర్వహిస్తుంది. అమలు కోసం పనిని సమర్పించే ముందు థ్రెడ్ చురుకుగా, బిజీగా లేదా చనిపోయినట్లయితే మీరు ఆందోళన చెందాల్సిన అవసరం లేదు.

  • టాస్క్ సమర్పణ మరియు అమలు: ఎగ్జిక్యూటర్ ఫ్రేమ్‌వర్క్ థ్రెడ్ పూల్‌లో టాస్క్ సమర్పణకు పద్ధతులను అందిస్తుంది, ఇది థ్రెడ్ అమలు అవుతుందో లేదో నిర్ణయించే శక్తిని కూడా ఇస్తుంది.

జావా -ఎదురేకాలో ఎగ్జిక్యూటర్స్ సర్వీస్-ఎగ్జిక్యూటర్స్ సర్వీస్

జావా ఉదాహరణలో ఎగ్జిక్యూటర్ సర్వీస్

ఇది ఎగ్జిక్యూటర్ ఫ్రేమ్‌వర్క్ యొక్క ఉప-ఇంటర్‌ఫేస్, ఇది అప్లికేషన్ యొక్క థ్రెడ్ జీవిత చక్రాన్ని నిర్వహించడానికి కొన్ని కార్యాచరణలను జోడిస్తుంది. ఇది అమలు చేయగల మరియు పిలవబడే రెండింటినీ అంగీకరించగల సమర్పణ () పద్ధతిని కూడా అందిస్తుంది వస్తువులు.



కింది ఉదాహరణలో, మేము ఒకే థ్రెడ్‌తో ఎగ్జిక్యూటర్‌సర్వీస్‌ను సృష్టించి, ఆపై థ్రెడ్ లోపల అమలు చేయాల్సిన పనిని సమర్పిస్తాము.

దిగుమతి java.util.concurrent.ExecutorService దిగుమతి java.util.concurrent.Executor పబ్లిక్ క్లాస్ ఉదాహరణ {పబ్లిక్ స్టాటిక్ శూన్య ప్రధాన (స్ట్రింగ్ [] అర్గ్స్) {System.out.println ('లోపల:' + Thread.currentThread (). getName (. ). '+ Thread.currentThread (). GetName ())} System.out.println (' అమలు చేయగల నిర్దేశించిన పనిని కార్యనిర్వాహక సేవకు సమర్పించండి ') executorervice.submit (runnable)}}
 అవుట్పుట్: లోపల: ప్రధానంగా సృష్టించే ఎగ్జిక్యూటర్ సర్వీస్ రన్ చేయదగినదాన్ని సృష్టించడం ద్వారా అమలు చేయదగినది నిర్దేశించిన పనిని లోపల ఉన్న కార్యనిర్వాహక సేవకు సమర్పించండి: పూల్ -1-థ్రెడ్ -1

పైవి మేము ఎగ్జిక్యూటర్ సేవను ఎలా సృష్టించగలమో మరియు ఎగ్జిక్యూటర్ లోపల ఒక పనిని ఎలా అమలు చేయవచ్చో చూపిస్తుంది. ఒక పని అమలు కోసం సమర్పించబడితే మరియు థ్రెడ్ ప్రస్తుతం మరొక పనిని అమలు చేయడంలో బిజీగా ఉంటే, అప్పుడు థ్రెడ్ దానిని అమలు చేయడానికి ఉచితం అయ్యే వరకు ఆ పని క్యూలో వేచి ఉంటుంది.

మీరు పై ప్రోగ్రామ్‌ను అమలు చేసినప్పుడు, ప్రోగ్రామ్ ఎప్పటికీ నిష్క్రమించదు. ఎగ్జిక్యూటర్ సేవ క్రొత్త పనులను వింటూనే ఉన్నందున మీరు దీన్ని స్పష్టంగా మూసివేయాలి.

జావా ఎగ్జిక్యూటర్ సర్వీస్ ఇంప్లిమెంటేషన్స్

ఎగ్జిక్యూటర్ సర్వీస్ థ్రెడ్ పూల్ కు చాలా పోలి ఉంటుంది. వాస్తవానికి, java.util.concurrent లో ఎగ్జిక్యూటర్ సర్వీసు అమలు ప్యాకేజీ థ్రెడ్‌పూల్ అమలు. ఎగ్జిక్యూటర్ సర్వీస్ java.util.concurrent ప్యాకేజీలో ఈ క్రింది అమలులను కలిగి ఉంది:

ThreadPoolExecutor

ThreadPoolExecutor ఇచ్చిన పనులను దాని అంతర్గతంగా పూల్ చేసిన థ్రెడ్‌లలో ఒకదాన్ని ఉపయోగించి అమలు చేస్తుంది.

ThreadPoolExecutor ను సృష్టిస్తోంది

int corePoolSize = 5 int maxPoolSize = 10 long keepAliveTime = 5000 ExecutorService threadPoolExecutor = new threadPoolExecutor (corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQue

షెడ్యూల్డ్ థ్రెడ్పూల్ఎక్సిక్యూటర్

Java.util.concurrent.ScheduledThreadPoolExecutor అనేది ఒక ఎగ్జిక్యూటర్ సర్వీస్, ఇది ఆలస్యం తర్వాత అమలు చేయడానికి లేదా ప్రతి అమలు మధ్య నిర్ణీత సమయ వ్యవధిలో పదేపదే అమలు చేయడానికి పనులను షెడ్యూల్ చేస్తుంది.

ఉదాహరణ

షెడ్యూల్డ్ ఎక్సెక్యూటర్ సర్వీస్ షెడ్యూల్ఎక్సెక్యూటర్స్ సర్వీస్ = ఎగ్జిక్యూటర్స్.న్యూషెడ్యూల్డ్ థ్రెడ్పూల్ (5) షెడ్యూల్డ్ ఫ్యూచర్ షెడ్యూల్డ్ ఫ్యూచర్ = షెడ్యూల్డ్ ఎక్సెక్యూటర్సర్వీస్.షెడ్యూల్ (కొత్త కాల్ చేయదగిన () {పబ్లిక్ ఆబ్జెక్ట్ కాల్ () విసిరివేత మినహాయింపు సెకన్లు)

ఎగ్జిక్యూటర్ సర్వీస్ వాడకం

కార్యనిర్వాహక సేవకు విధులను అప్పగించడానికి కొన్ని విభిన్న మార్గాలు ఉన్నాయి.

  • అమలు (అమలు చేయగల)

  • సమర్పించండి (అమలు చేయదగినది)

  • invokeAny ()

  • invokeAll ()

అమలు చేయదగినదిగా అమలు చేయండి

జావా ఎగ్జిక్యూటర్ సర్వీస్ ఎగ్జిక్యూట్ (రన్ చేయదగినది) ఒక java.lang.Runnable ఆబ్జెక్ట్ తీసుకొని దానిని అసమకాలికంగా అమలు చేస్తుంది.

ఎగ్జిక్యూటర్ సర్వీస్ ఎగ్జిక్యూటర్ సర్వీస్ = ఎగ్జిక్యూటర్స్.న్యూ సింగిల్ థ్రెడ్ఎక్సెక్యూటర్ () ఎగ్జిక్యూటర్ సర్వీస్.ఎక్సిక్యూట్ (కొత్త రన్ చేయదగిన () {పబ్లిక్ శూన్యత రన్ ()

రన్ చేయదగిన ఎగ్జిక్యూట్ ఫలితాన్ని పొందడానికి మార్గం లేదు, దాని కోసం మీరు కాల్ చేయదగినదాన్ని ఉపయోగించాలి.

అమలు చేయగల సమర్పించండి

జావా ఎగ్జిక్యూటర్ సర్వీస్ సమర్పణ (రన్ చేయదగిన) పద్ధతి రన్ చేయదగిన అమలును తీసుకుంటుంది మరియు భవిష్యత్ వస్తువును తిరిగి ఇస్తుంది. రన్ చేయదగిన ఎగ్జిక్యూట్ పూర్తయిందో లేదో తనిఖీ చేయడానికి భవిష్యత్ వస్తువును ఉపయోగించవచ్చు.

భవిష్యత్ భవిష్యత్తు = executorService.submit (కొత్త రన్ చేయదగిన () {పబ్లిక్ శూన్యత రన్ () {System.out.println (: అసమకాలిక పని ')}}) future.get () // పని సరిగ్గా పూర్తయితే శూన్యంగా తిరిగి వస్తుంది.

పిలవబడే సమర్పించండి

జావా ఎగ్జిక్యూటర్ సర్వీస్ సమర్పణ (కాల్ చేయదగిన) పద్ధతి సమర్పించడానికి (రన్ చేయదగినది) మాదిరిగానే ఉంటుంది, అయితే ఇది రన్ చేయదగిన బదులు జావా కాల్ చేయదగినది.

భవిష్యత్ భవిష్యత్తు = కార్యనిర్వాహక సేవ.సబ్మిట్ (క్రొత్త పిలవదగిన () {పబ్లిక్ ఆబ్జెక్ట్ కాల్ () మినహాయింపును విసిరివేస్తుంది {System.out.println ('అసమకాలిక కాల్') తిరిగి 'పిలవదగిన ఫలితం'} System) System.out.println ('future.get ( ) = 'future.get ())
 అవుట్పుట్: అసమకాలిక కాల్ చేయదగిన future.get = పిలవదగిన ఫలితం

invokeAny ()

ఇన్వోక్అనీ () పద్ధతి కాల్ చేయదగిన వస్తువుల సేకరణను తీసుకుంటుంది. ఈ పద్ధతిని ప్రారంభించడం వల్ల భవిష్యత్తు ఏదీ రాదు, కానీ పిలవబడే వస్తువులలో ఒకదాని ఫలితాన్ని అందిస్తుంది.

ఎగ్జిక్యూటర్ సర్వీస్ ఎగ్జిక్యూటర్ సర్వీస్ = ఎగ్జిక్యూటర్స్.న్యూసింగిల్ థ్రెడ్ఎక్సిక్యూటర్ () సెట్callables = క్రొత్త హాష్‌సెట్. }) callables.add (క్రొత్త కాల్ చేయదగిన () {పబ్లిక్ స్ట్రింగ్ కాల్ () విసిరిన మినహాయింపు {return'task C '}}) స్ట్రింగ్ ఫలితం = executorService.invokeAny (callables) System.out.println (' result = '+ result) executorService .షట్డౌన్ ()

మీరు పై కోడ్‌ను అమలు చేసినప్పుడు, ఫలితం మారుతుంది. ఇది టాస్క్ ఎ, టాస్క్ బి మరియు మొదలైనవి కావచ్చు.

ఇన్వోక్అల్ ()

ఇన్వోక్అల్ () పద్ధతి పారామితులుగా ఆమోదించబడిన అన్ని పిలవబడే వస్తువులను పిలుస్తుంది. ప్రతి కాల్ చేయదగిన అమలు ఫలితాలను పొందడానికి ఉపయోగపడే భవిష్యత్ వస్తువులను ఇది తిరిగి ఇస్తుంది.

ఎగ్జిక్యూటర్ సర్వీస్ ఎగ్జిక్యూటర్ సర్వీస్ = ఎగ్జిక్యూటర్స్.న్యూసింగిల్ థ్రెడ్ఎక్సిక్యూటర్ () సెట్callables = క్రొత్త హాష్‌సెట్. }) callables.add (క్రొత్త కాల్ చేయదగిన () {పబ్లిక్ స్ట్రింగ్ కాల్ () మినహాయింపు విసురుతుంది {తిరిగి 'టాస్క్ సి'}}) జాబితా(ఫ్యూచర్ ఫ్యూచర్: ఫ్యూచర్స్) {system.out.println ('future.get =' + future.get ())} executorService.shutdown ()

రన్ చేయగల vs కాల్ చేయదగినది

రన్ చేయదగిన మరియు పిలవబడే ఇంటర్‌ఫేస్‌లు ఒకదానికొకటి చాలా పోలి ఉంటాయి. యొక్క ప్రకటనలో తేడా కనిపిస్తుంది ఇంటర్ఫేస్లు. రెండు ఇంటర్‌ఫేస్‌లు ఒక థ్రెడ్ లేదా ఎగ్జిక్యూటర్ సర్వీస్ ద్వారా ఏకకాలంలో అమలు చేయగల పనిని సూచిస్తాయి.

పిలవదగిన ప్రకటన:

పబ్లిక్ ఇంటర్ఫేస్ కాల్ చేయదగినది {పబ్లిక్ ఆబ్జెక్ట్ కాల్ () మినహాయింపు విసిరింది}

అమలు చేయగల ప్రకటన:

పబ్లిక్ ఇంటర్ఫేస్ రన్ చేయదగిన {పబ్లిక్ శూన్యత రన్ ()}

రెండింటి మధ్య ప్రధాన వ్యత్యాసం ఏమిటంటే, కాల్ () పద్ధతి పద్ధతి కాల్ నుండి ఒక వస్తువును తిరిగి ఇవ్వగలదు. మరియు కాల్ () పద్ధతి ఒక విసిరివేయగలదు రన్ () పద్ధతి సాధ్యం కాదు.

లైనక్స్ నిర్వాహకుడు ఏమి చేస్తారు

పనిని రద్దు చేయండి

విధిని సమర్పించినప్పుడు సమర్పించిన భవిష్యత్తుపై రద్దు పద్ధతిని పిలవడం ద్వారా మీరు ఎగ్జిక్యూటర్ సేవకు సమర్పించిన పనిని రద్దు చేయవచ్చు.

future.cancel ()

ఎగ్జిక్యూటర్ సర్వీస్ షట్డౌన్

అమలు పూర్తయిన తర్వాత కూడా థ్రెడ్‌లు పనిచేయకుండా ఉండటానికి, మీరు ఎగ్జిక్యూటర్ సేవను మూసివేయాలి.

షట్డౌన్ ()

ఎగ్జిక్యూటర్ సర్వీస్ లోపల థ్రెడ్లను ముగించడానికి మీరు షట్డౌన్ () పద్ధతిని పిలుస్తారు.

executorService.shutdown ()

ఇది థ్రెడ్‌లో పనులను అమలు చేయడానికి ఎగ్జిక్యూటర్ సర్వీసును ఎలా ఉపయోగించవచ్చో నేర్చుకున్న ఈ వ్యాసం చివరకి ఇది మనలను తీసుకువస్తుంది. ఈ ట్యుటోరియల్‌లో మీతో పంచుకున్న అన్ని విషయాలతో మీరు స్పష్టంగా ఉన్నారని నేను ఆశిస్తున్నాను.

“జావాలో ఎగ్జిక్యూటర్ సర్వీస్” పై ఈ కథనాన్ని మీరు కనుగొంటే, చూడండి ప్రపంచవ్యాప్తంగా 250,000 కంటే ఎక్కువ సంతృప్తికరమైన అభ్యాసకుల నెట్‌వర్క్‌తో విశ్వసనీయ ఆన్‌లైన్ లెర్నింగ్ సంస్థ.

మీ ప్రయాణంలో అడుగడుగునా మీకు సహాయం చేయడానికి మేము ఇక్కడ ఉన్నాము మరియు జావా డెవలపర్‌గా ఉండాలనుకునే విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించిన పాఠ్యాంశాలను రూపొందించండి. ఈ కోర్సు మీకు జావా ప్రోగ్రామింగ్‌లోకి రావడానికి మరియు వివిధ మరియు కోర్ మరియు అడ్వాన్స్‌డ్ జావా కాన్సెప్ట్‌లకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది వంటి నిద్రాణస్థితి & .

మీకు ఏవైనా ప్రశ్నలు వస్తే, “జావాలో ఎగ్జిక్యూటర్ సర్వీస్” యొక్క వ్యాఖ్యల విభాగంలో మీ ప్రశ్నలన్నింటినీ అడగడానికి సంకోచించకండి మరియు మా బృందం సమాధానం ఇవ్వడానికి సంతోషిస్తుంది.