2012-05-14 14 views
5

जब आमतौर पर (लघु-चल रहे) कार्यों की बात आती है तो निष्पादक आमतौर पर उपयोग किए जाते हैं, लेकिन लंबे समय से चल रहे कार्यों से निपटने का सबसे अच्छा तरीका क्या है, उदा। कार्य जो पूरे आवेदन के पूरे जीवनकाल में चलाना चाहिए?लंबे समय तक चलने वाले कार्यों को कैसे निष्पादित करें?

मान लें कि मेरे पास एक ऐसा एप्लिकेशन है जिसमें एक अलग थ्रेड पर चलने वाला एक कार्य प्रत्येक एक्स सेकंड में परिवर्तन के लिए एक निर्देशिका है। जब तक एप्लिकेशन छोड़ता है, तब तक इस कार्य को मतदान छोड़ना नहीं चाहिए। मैं इसे कैसे शुरू और प्रबंधित करूं?

new Thread(theLongRunningTask).start() इतना बुरा विकल्प होगा?

उत्तर

5

यह निष्पादक ढांचे के लिए भी उपयोग-मामला है, विशेष रूप से scheduleAtFixedRate। ऐप पूरा होने पर बस उस धागे के लिए लटकने के लिए बाहर देखो। आप कस्टम ThreadFactory का उपयोग कर सकते हैं जो डेमन-थ्रेड बनाता है। या, यदि आप कुछ आसान चाहते हैं, तो Timer API का उपयोग करें। आप एक बूलियन तर्क के साथ Timer बना सकते हैं जिसका अर्थ है "डेमन थ्रेड का उपयोग करें"। जब आपका एप्लिकेशन समाप्त हो रहा है तो आप निष्पादक सेवा को स्पष्ट रूप से बंद भी कर सकते हैं।

+0

थ्रेडफैक्टरी + डेमन के बजाए, आप बाहर निकलने पर निष्पादक को बंद कर सकते हैं (माना जाता है कि सबमिट किए गए कार्यों में व्यवधान अनुकूल है और/या हर समय नहीं चलते हैं)। – assylias

+0

हां, मैं सहमत हूं - मुझे डेमॉन थ्रेड का बहुत शौक नहीं है क्योंकि वे थ्रेड प्रबंधन के संदर्भ में आसानी से आपके नियंत्रण से बाहर निकल सकते हैं। – Cowboy

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