क्या कोई विशिष्ट थ्रेड रोकने/फिर से शुरू करने के लिए निष्पादक सेवा का उपयोग करने का कोई तरीका है?जावा एक्जिक्यूटर्स सर्विस रोकें/एक विशिष्ट थ्रेड को फिर से शुरू करें
private static ExecutorService threadpool = Executors.newFixedThreadPool(5);
कल्पना कीजिए कि मैं आईडी = 0 (यह सोचते हैं कि करने के लिए हर एक ThreadPool के आकार तक एक वृद्धिशील आईडी निर्दिष्ट नहीं पहुँच जाता है) के रूप में धागा है जो बंद करना चाहते हैं।
थोड़ी देर के बाद, एक बटन दबाकर, मान लें कि, मैं उस विशिष्ट थ्रेड को फिर से शुरू करना चाहता हूं और अन्य सभी धागे को अपनी वर्तमान स्थिति के साथ छोड़ना चाहता हूं, जिसे रोक दिया जा सकता है या फिर से शुरू किया जा सकता है।
मुझे जावा दस्तावेज़ पर PausableThreadPoolExecutor का एक अपूर्ण संस्करण मिला है। लेकिन यह मेरी ज़रूरत के अनुरूप नहीं है क्योंकि यह पूल में सभी धागे को फिर से शुरू करता है।
यदि निष्पादक सेवा के डिफ़ॉल्ट कार्यान्वयन के साथ ऐसा करने का कोई तरीका नहीं है तो क्या कोई मुझे इस समस्या के लिए जावा कार्यान्वयन के लिए इंगित कर सकता है?
धन्यवाद!
आपको यकीन है?दिए गए आईडी के साथ थ्रेड कुछ यादृच्छिक रूप से चुने गए नौकरी निष्पादित करता है, इसलिए आप कुछ अज्ञात नौकरी रोक रहे हैं। ऐसा करने का अर्थ क्या है? –
निम्न स्थिति की कल्पना करें: आपके पास एक डाउनलोड प्रबंधक है, और उस प्रबंधक पर आप डाउनलोड को रोक और फिर से शुरू कर सकते हैं। प्रत्येक के लिए आप सामान डाउनलोड कर रहे हैं, इससे कोई फर्क नहीं पड़ता कि प्रासंगिक नहीं है, और आप जहां भी चाहें उस डाउनलोड को फिर से शुरू करना चाहते हैं। क्या यह सवाल आपको अधिक स्पष्ट करता है? –
अधिक स्पष्ट, लेकिन अभी भी ज्यादा समझ में नहीं आता है। डाउनलोड रोकें/फिर से शुरू करें व्यवसाय तर्क के बारे में है, जबकि थ्रेडपूल कम्प्यूटेशनल संसाधनों के बारे में है। संसाधनों को जोड़ने/निकालने के द्वारा तर्क को नियंत्रित करने के लिए IMHO एक बुरा विचार है। –