निर्वाहक

निष्पादक कक्षाओं के लिए आधार इंटरफ़ेस है जो रननेबल कार्यों के लॉन्च को लागू करता है। यह किसी कार्य को जोड़ने और उसे प्रारंभ करने के तरीके में सहायता प्रदान करता है.
ExecutorService एक इंटरफ़ेस है जो एक्ज़ीक्यूटर के गुणों का विस्तार करता हैऔर रननेबल या कॉल करने योग्य कार्यों को चलाने के लिए एक सेवा का वर्णन करता है। सबमिट मेथड एक इनपुट के रूप में कॉल करने योग्य या रननेबल के रूप में एक कार्य को स्वीकार करता है, और फ्यूचर का उपयोग रिटर्न वैल्यू के रूप में किया जाता है, जिसके माध्यम से आप परिणाम प्राप्त कर सकते हैं।
इनवोकअल विधि कार्यों को निष्पादित करने, उनकी स्थिति और पूर्ण परिणामों के साथ कार्यों की सूची वापस करने के लिए ज़िम्मेदार है।
इनवोकएनी विधि कार्यों को निष्पादित करने के लिए ज़िम्मेदार है, सफलतापूर्वक पूर्ण किए गए कार्य के परिणाम को वापस कर रही है (यानी, बिना किसी अपवाद को फेंके), यदि कोई हो।
शेड्यूल्ड एक्ज़ीक्यूटर सर्विस - यह इंटरफ़ेस एक निश्चित देरी या एक निश्चित अवधि के साथ लंबित कार्यों को चलाने की क्षमता जोड़ता है।
AbstractExecutorService एक ExecutorService 'a'के निर्माण के लिए एक सार वर्ग हैअंदर सबमिट , इनवोकएल , इनवोकएनी विधियों का कार्यान्वयन है। यह वर्ग थ्रेडपूल एक्ज़ीक्यूटर , शेड्यूल्ड थ्रेडपूल एक्ज़ीक्यूटर और फोर्कजॉइनपूल इनहेरिट करता है ।
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();
}
थ्रेडपूल एक्ज़ीक्यूटर

एक्ज़ीक्यूटर्स थ्रेडपूल एक्ज़ीक्यूटर , शेड्यूल्ड थ्रेडपूल एक्ज़ीक्यूटर बनाने के लिए फ़ैक्टरी क्लास है। यदि आपको इनमें से एक पूल बनाने की आवश्यकता है, तो यह कारखाना ठीक वही है जिसकी आपको आवश्यकता है। इसमें अलग-अलग एडेप्टर रननेबल-कॉल करने योग्य, प्रिविलेज्ड एक्शन-कॉल करने योग्य, प्रिविलेज्ड एक्सेप्शनएक्शन-कॉल करने योग्य और अन्य शामिल हैं। विभिन्न थ्रेडपूल बनाने के लिए स्थिर तरीके हैं।
थ्रेडपूल एक्ज़ीक्यूटर - एक्ज़ीक्यूटर और एक्ज़ीक्यूटर सर्विस इंटरफेस को लागू करता है और टास्क के निर्माण को टास्क के निष्पादन से अलग करता है। हमें रननेबल ऑब्जेक्ट्स को लागू करने और उन्हें निष्पादक को भेजने की आवश्यकता है, और थ्रेडपूल एक्ज़ीक्यूटर उनके निष्पादन, तात्कालिकता और थ्रेड्स के साथ काम करने के लिए जिम्मेदार है।
शेड्यूल्ड थ्रेडपूल एक्ज़ीक्यूटर - थ्रेडपूल एक्ज़ीक्यूटर विधियों के अलावा, यह थ्रेड्स का एक पूल बनाता है जो किसी दिए गए विलंब के बाद या आवधिक निष्पादन के लिए कमांड को शेड्यूल कर सकता है।
थ्रेडफैक्टरीएक वस्तु है जो मांग पर नए धागे बनाती है। हमें 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 - आपको उन कार्यों के लिए एक हैंडलर को परिभाषित करने की अनुमति देता है जो किसी कारण से थ्रेडपूल एक्ज़ीक्यूटर के माध्यम से निष्पादित नहीं किए जा सकते हैं । यह तब होता है जब कोई मुफ्त स्ट्रीम नहीं होती है या सेवा बंद या बंद हो जाती है।
थ्रेडपूल एक्ज़ीक्यूटर वर्ग में कई मानक कार्यान्वयन पाए जाते हैं :
- CallerRunsPolicy - कॉलिंग थ्रेड पर कार्य चलाता है;
- गर्भपात नीति - एक अपवाद फेंकता है;
- त्याग नीति - कार्य पर ध्यान नहीं देता;
- DiscardOldestPolicy - कतार से सबसे पुराने अनस्टार्टेड टास्क को हटाता है, फिर एक नया टास्क जोड़ने की कोशिश करता है।
समापन सेवा

कंप्लीशन सर्विस एक सर्विस इंटरफेस है जिसमें अतुल्यकालिक कार्यों को लॉन्च करने और परिणाम प्राप्त करने का डिकॉप्लिंग है। कार्यों को जोड़ने के लिए एक सबमिटविधि, और पहले से ही पूर्ण किए गए कार्यों के परिणाम प्राप्त करने के लिए, एक ब्लॉकिंगटेकऔर एक नॉन-ब्लॉकिंगपोल।
ExecutorCompletionService किसी भी वर्ग पर एक आवरण है जो Executor इंटरफ़ेस को लागू करता है , जैसे कि थ्रेडपूल एक्ज़ीक्यूटर या ForkJoinPool । इसका उपयोग तब किया जाता है जब कार्यों को लॉन्च करने और उनके निष्पादन को नियंत्रित करने की विधि से अमूर्त करना आवश्यक होता है।
यदि कार्य पूरे हो जाते हैं, तो हम उन्हें बाहर निकाल देते हैं। यदि कोई कार्य नहीं है, तो हम तब तक लटके रहते हैं जब तक कि कुछ पूरा नहीं हो जाता। सेवा अपने मूल में LinkedBlockingQueue का उपयोग करती है, लेकिन आप किसी भी BlockingQueue कार्यान्वयन में पास हो सकते हैं।
GO TO FULL VERSION