मुझे संदेह है कि java.util.concurrent
में प्रदान की गई कुछ भी आपके लिए यह नहीं करेगी, सिर्फ इसलिए कि यदि आपको अनुसूचित निष्पादन सेवा की आवश्यकता है, तो आपके पास अक्सर आवर्ती कार्य करने के लिए कार्य होते हैं। यदि आपके पास आवर्ती कार्य है, तो आमतौर पर केवल उसी धागे को रखने और कार्य के अगले पुनरावृत्ति के लिए इसका उपयोग करने के लिए अधिक समझ में आता है, बल्कि आपके धागे को फाड़ने और अगले पुनरावृत्ति में एक नया निर्माण करने के बजाय ।
बेशक, एक अनुसूचित निष्पादक का उपयोग गैर-पुनरावर्ती कार्यों के बीच देरी डालने के लिए किया जा सकता है, या इसका उपयोग उन मामलों में किया जा सकता है जहां संसाधन बहुत दुर्लभ हैं और पुनरावृत्ति इतनी कम है कि आपके सभी धागे को फाड़ना समझ में आता है नया काम आता है। इसलिए, मैं ऐसे मामलों को देख सकता हूं जहां आपका प्रस्ताव निश्चित रूप से समझ में आएगा।
इसे लागू करने के लिए, मैं Executors.newCachedThreadPool
से एक कैश किए गए थ्रेड पूल को एक सिंगल-थ्रेडेड अनुसूचित एक्जिक्यूटर सेवा (यानी new ScheduledThreadPoolExecutor(1)
) के साथ लपेटने का प्रयास करने पर विचार करता हूं। कार्यों को निर्धारित निष्पादक सेवा के माध्यम से निर्धारित किया जा सकता है, लेकिन निर्धारित कार्यों को इस तरह से लपेटा जाएगा कि आपके एकल-थ्रेडेड अनुसूचित निष्पादक को निष्पादित करने के बजाय, एकल-थ्रेडेड निष्पादक उन्हें वास्तविक रूप से कैश किए गए थ्रेड पूल पर सौंप देगा निष्पादन।
यह समझौता आपको अधिकतम एक थ्रेड देता है जब ऐसा करने के लिए बिल्कुल कोई काम नहीं होता है, और यह आपको बहुत से धागे देगा (आपको अपने सिस्टम की सीमाओं के भीतर) निश्चित रूप से काम करने के लिए।
स्रोत
2010-02-25 19:19:08
ऐसा लगता है कि आप कुछ ऐसा चाहते हैं जो 'निष्पादक सेवा' से 'एक्जिक्यूटर्स सेवा' जैसे 'निष्पादक सेवा' से निष्पादित करता है और निष्पादित करता है। केवल यह कि आप केवल 'निष्पादक सेवा' के बजाय 'अनुसूचित कार्यवाहक सेवा' इंटरफ़ेस को लागू करना चाहते हैं। इंटरफेस। क्या यह एक सटीक सारांश है? –
असल में, हाँ, यह एक सटीक सारांश है। –