कई धागा अभी भी संदेश के बाद मौजूदा कर रहे हैं मुद्रित किया जाता है? या हर बार रन फ़ंक्शन समाप्त हो जाता है, धागा नष्ट हो जाता है?
आपके मामले में, आप प्रत्येक थ्रेड क्लिक के लिए थ्रेड बनने के बाद से कई धागे बना रहे हैं।
run()
विधि में अंतिम विवरण पूरा करने के बाद थ्रेड का जीवनकाल समाप्त हो गया है। run()
विधि के निष्पादन के बाद, थ्रेड TERMINATED
State में प्रवेश करेगा और इसे फिर से चलाया नहीं जा सकता है।
बेहतर समाधान प्रत्येक बटन क्लिक के लिए एक नया थ्रेड नहीं बना रहा है। यदि आपको अपने आवेदन में अधिक थ्रेड की आवश्यकता है, तो थ्रेड के पूल के लिए जाएं।
जावा इस उद्देश्य के लिए Executor ढांचा प्रदान करता है। यह बेहतर तरीके से थ्रेड जीवन चक्र का प्रबंधन करता है।
उपयोग एपीआई में से एक है, जो Executors
उदा से ExecutorService
वापस आ जाएगी newFixedThreadPool(4)
अधिक 0 विकल्पों के लिए इस post और यह article पर एक नज़र डालें।
मामले में मैं कई सूत्र जो एक ही समय में चल रहे हैं बनाने के लिए, कैसे मैं उन्हें एक साफ तरह से बंद कर सकते हैं?
आप कर सकते हैं बंद ExecutorService
के रूप में एसई पोस्ट के नीचे में उद्धृत: HandlerThread और Handler
देखें:
How to properly shutdown java ExecutorService
आप Android का उपयोग कर रहे हैं, आप बहु सूत्रण के लिए एक और अच्छा विकल्प है अधिक जानकारी के लिए नीचे पोस्ट करने के लिए:
Android: Toast in a thread
स्रोत
2015-12-17 11:57:28
मुझे लगता है कि आपको मैन्युअल रूप से नए धागे बनाने के बजाय निष्पादक सेवा का उपयोग करना चाहिए। –