Tengo una aplicación donde cuando un "juego" estadísticas, comienza un par de hilos diferentes. Empiezo los hilos de esta manera:Buena práctica para multi-threading
Thread thread = new Thread(new Runnable()
{
public void run()
{
//...
}
});
thread.setName("killMeAtEnd");
thread.start();
Más tarde, cuando el juego termina tengo un método dispose() dentro del juego que ordena a través de todos los subprocesos que se ejecutan y termina todos los hilos que tienen el nombre de "killMeAtEnd" . Mi pregunta es, ¿es esta una buena práctica? Mi intención es mantener mi aplicación en funcionamiento rápido y libre de obstáculos, en mi experiencia Los hilos que se quedan "colgando" tienden a ralentizar el teléfono hasta que la aplicación finaliza. ¿Hay una mejor manera de hacer esto? ¿Vale la pena preocuparse por esto?
EDIT:
Aquí es mi dispose()
si alguien estaba interesado. Este código está dentro de la clase Juego.
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";
Obtener stacktraces es bastante caro, por lo que sería más eficiente si guardara 'threads []' mientras crea los threads y hace que 'dispose (Thread [] threads) '. ¿Hay otros hilos que continúan ejecutándose cuando termina el juego o es para evitar que elimines el hilo de la interfaz de usuario? – zapl
Cuando el "juego" termina, la Actividad no termina, se mueve a otra cosa. – John