2012-06-25 12 views
13

मैं Executors.newScheduledThreadPool() उपयोग कर रहा हूँ एक ScheduledExecutorService बनाने के लिए है, इसलिए की तरह धागे की संख्या का उल्लेख करने:क्या एक अनुसूचित एक्सेलसर्स सेवा आवश्यकतानुसार नए धागे बनाएगी?

int corePoolSize = 42; 
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize); 

Javadocs के अनुसार, corePoolSize तर्क सेट

धागे में रखने के लिए की संख्या पूल, भले ही वे निष्क्रिय हैं।

इसका मतलब यह है कि इस ExecutorService कार्यान्वयन के रूप में की जरूरत है और अधिक से अधिक corePoolSize सूत्र, एक cached thread pool के लिए इसी तरह बना सकते हैं?

+1

कोर पूल का आकार: http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html – assylias

+0

संबंधित: http://stackoverflow.com/ प्रश्न/42495659/कैसे-टू-बिल्ड-ए-शेड्यूलएक्सएक्सर्स सर्विस-बाउंड-बाय-ओन-द-सीपीयू-यूज –

उत्तर

7

नहीं। सही उत्तर नहीं है, एक निर्धारित अनुसूचित जाति सेवा नई धागे नहीं उगाएगी।

See answer here

+0

अच्छी तरह से बेकार। मैं आपकी भावना से सहमत हूं (आपकी हटाई गई पोस्ट में) कि यह बहुत परेशान है। –

+1

@ माइकल - कृपया बताएं कि आप ऐसा क्यों सोचते हैं। –

+0

मुख्य कारण [दस्तावेज़ीकरण] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html) से निम्नलिखित वाक्य है: "जबकि इस वर्ग को ThreadPoolExecutor से प्राप्त होता है, विरासत ट्यूनिंग विधियों में से कुछ इसके लिए उपयोगी नहीं हैं। विशेष रूप से, क्योंकि यह कोरपूलसाइज थ्रेड और एक असंबद्ध कतार का उपयोग करके एक निश्चित आकार के पूल के रूप में कार्य करता है, अधिकतमपूल आकार के समायोजन का कोई उपयोगी प्रभाव नहीं होता है। " –

6

क्या इसका मतलब यह है कि यह निष्पादक सेवा कार्यान्वयन corePoolSize धागे से अधिक आवश्यक हो सकता है?

हां, यह बिल्कुल इसका मतलब है। corePoolSize के अस्तित्व का कारण धागा निर्माण का खर्च है। यदि आप अपने निष्पादक सेवा पर बड़ी संख्या में अल्पकालिक कार्यों को फायर करने की उम्मीद करते हैं, तो आप समय पर किसी दिए गए बिंदु पर, निष्क्रिय धागे की बड़ी संख्या में खोजने की उम्मीद कर सकते हैं।

इन धागे मरने की बजाय, केवल नव निर्मित धागे द्वारा 0 बहुत ही कम समय में प्रतिस्थापित किया जाना चाहिए, corePoolSize यह सुनिश्चित करेगा कि हमेशा कताई धागे की संख्या होगी।

+0

प्रलेखन! आप या तो दस्तावेज़ीकरण पर भरोसा करते हैं या आप नहीं करते :-) –

+0

ठीक है, ऐसा लगता है कि यह वास्तव में सच नहीं है। 'ScheduledExecutorService' के लिए प्रलेखन को देखने की आवश्यकता है, न कि केवल 'ThreadPoolExecutor'' corePoolSize' अवधारणा। अब मैं सोच रहा हूं कि इसे 'न्यूनतमपूलसाइज' क्यों नहीं कहा जाता है ... –

संबंधित मुद्दे