కార్యనిర్వాహకుడు

ఎగ్జిక్యూటర్ అనేది రన్ చేయదగిన టాస్క్‌ల ప్రారంభాన్ని అమలు చేసే తరగతులకు బేస్ ఇంటర్‌ఫేస్. ఇది టాస్క్‌ను జోడించడంలో మరియు దాన్ని ఎలా ప్రారంభించాలో సహాయం అందిస్తుంది.

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

InvokeAll పద్ధతి టాస్క్‌లను అమలు చేయడం, టాస్క్‌ల జాబితాను వాటి స్థితి మరియు పూర్తి ఫలితాలతో అందించడం కోసం బాధ్యత వహిస్తుంది.

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

ScheduledExecutorService - ఈ ఇంటర్‌ఫేస్ పెండింగ్‌లో ఉన్న పనులను నిర్దిష్ట ఆలస్యం లేదా నిర్దిష్ట వ్యవధితో అమలు చేయగల సామర్థ్యాన్ని జోడిస్తుంది.

AbstractExecutorService అనేది ExecutorService 'aని నిర్మించడానికి ఒక వియుక్త తరగతి. లోపల సబ్మిట్ , ఇన్వోక్ ఆల్ , ఇన్వోక్ ఎనీ మెథడ్స్ అమలు ఉంది. ఈ తరగతి ThreadPoolExecutor , ScheduledThreadPoolExecutor మరియు ForkJoinPoolని వారసత్వంగా పొందుతుంది .

public static void main(String[] args) {
   ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
   Callable<String> task = () -> {
       System.out.println(Thread.currentThread().getName());
       return Thread.currentThread().getName();
   };
   scheduledExecutorService.schedule(task, 10, TimeUnit.SECONDS);
   scheduledExecutorService.shutdown();
}

ThreadPoolExecutor

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

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

ScheduledThreadPoolExecutor - ThreadPoolExecutor పద్ధతులకు అదనంగా, ఇది ఇచ్చిన ఆలస్యం తర్వాత లేదా ఆవర్తన అమలు కోసం ఆదేశాలను అమలు చేయడానికి షెడ్యూల్ చేయగల థ్రెడ్‌ల సమూహాన్ని సృష్టిస్తుంది.

థ్రెడ్‌ఫ్యాక్టరీడిమాండ్‌పై కొత్త థ్రెడ్‌లను సృష్టించే వస్తువు. మేము Executors.newSingleThreadExecutor(ThreadFactory threadFactory) పద్ధతికి ఒక ఉదాహరణను అందించాలి .

ExecutorService executorService = Executors.newSingleThreadExecutor(new ThreadFactory() {
 @Override public Thread newThread(Runnable r) {
Thread thread = new Thread(r, "MyThread");
thread.setPriority(Thread.MAX_PRIORITY);
 return thread; }
 });

RejectedExecutionHandler - కొన్ని కారణాల వల్ల ThreadPoolExecutor ద్వారా అమలు చేయలేని పనుల కోసం హ్యాండ్లర్‌ను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉచిత స్ట్రీమ్‌లు లేనప్పుడు లేదా సేవ మూసివేయబడినప్పుడు లేదా షట్‌డౌన్ అయినప్పుడు ఇది జరుగుతుంది.

ThreadPoolExecutor తరగతిలో అనేక ప్రామాణిక అమలులు కనుగొనబడ్డాయి :

  • CallerRunsPolicy - కాలింగ్ థ్రెడ్‌లో ఒక పనిని అమలు చేస్తుంది;
  • AbortPolicy - మినహాయింపును విసురుతుంది;
  • డిస్కార్డ్ పాలసీ - పనిని విస్మరిస్తుంది;
  • విస్మరించండిOldestPolicy - క్యూ నుండి ప్రారంభించబడని పురాతన పనిని తీసివేసి, మళ్లీ కొత్త పనిని జోడించడానికి ప్రయత్నిస్తుంది.

పూర్తి సేవ

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

ExecutorCompletionService అనేది ThreadPoolExecutor లేదా ForkJoinPool వంటి ఎగ్జిక్యూటర్ ఇంటర్‌ఫేస్‌ను అమలు చేసే ఏదైనా తరగతిపై ఒక రేపర్. పనులను ప్రారంభించడం మరియు వాటి అమలును నియంత్రించే పద్ధతి నుండి సంగ్రహించాల్సిన అవసరం వచ్చినప్పుడు ఇది ఉపయోగించబడుతుంది.

పూర్తయిన పనులు ఉంటే, మేము వాటిని బయటకు తీస్తాము. టాస్క్‌లు లేకపోతే, ఏదైనా పూర్తయ్యే వరకు మేము టేక్‌లో ఉంటాము. సేవ దాని ప్రధాన భాగంలో లింక్డ్‌బ్లాకింగ్ క్యూను ఉపయోగిస్తుంది, అయితే మీరు ఏదైనా బ్లాకింగ్ క్యూ అమలులో ఉత్తీర్ణత సాధించవచ్చు.