के लिए अच्छा अभ्यास मेरे पास एक ऐप है जहां एक "गेम" आंकड़े, यह दो अलग-अलग धागे शुरू करता है। मैं बहुत की तरह धागे शुरू:बहु-थ्रेडिंग
Thread thread = new Thread(new Runnable()
{
public void run()
{
//...
}
});
thread.setName("killMeAtEnd");
thread.start();
बाद में जब खेल समाप्त होता है मैं खेल के अंदर एक निपटाने() विधि जो चल धागे के सभी के माध्यम से क्रमबद्ध करता और धागे का नाम "killMeAtEnd" है कि सब समाप्त हो जाती है है । मेरा सवाल है, क्या यह अच्छा अभ्यास है? मेरा इरादा है कि मेरे ऐप को तेजी से और अव्यवस्थित मुक्त चलाना है, मेरे अनुभव में थ्रेड जो "लटकते" हैं, ऐप समाप्त होने तक फ़ोन को धीमा कर देते हैं। क्या ऐसा करने के लिए इससे अच्छा तरीका है? क्या यह भी परेशान करने लायक है?
संपादित करें:
यहाँ मेरी dispose()
अगर कोई दिलचस्पी थी है। यह कोड कक्षा गेम के भीतर है।
public void dispose()
{
Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray();
for(int x=0;x<threads.length;x++)
{
Thread thread = threads[x];
if(thread.getName().equalsIgnoreCase(KILL))
{
try
{
thread.interrupt();
}catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));}
thread = null;
}
}
}
public static final String KILL = "endOnDispose";
स्टैकट्रैक प्राप्त करना काफी महंगा है, इसलिए यदि आप धागे बनाते हैं और इसे 'निपटाना [थ्रेड [] धागे) बनाते हैं तो यह अधिक कुशल होगा यदि आप' धागे [] 'को सहेज लेंगे। क्या कोई अन्य धागे चल रहा है जब आपका गेम समाप्त होता है या यह आपको यूआई थ्रेड को मारने से रोकने के लिए है? – zapl
जब गतिविधि पर "गेम" खत्म हो जाता है, तो यह कुछ और नहीं चलता है। मदद के लिए – John