thread - Detener un hilo en Java?
Estoy en el proceso de escribir un fragmento de código que se conecta a un servidor genera un montón de hilos usando esa conexión y hace un montón de "cosas".
Hay ciertos casos en los que la conexión falla y necesito detener todo y comenzar de cero con un nuevo objeto.
Quería limpiar después del objeto pero llamar a thread.stop en los hilos, pero este método aparentemente está en desuso.
¿Cuál es la alternativa recomendada para hacer esto? ¿Debo escribir mi propio método de limpieza y salida para cada uno de los hilos? Establecer el hilo a nulo? ¿o algo mas?
Suponiendo que sus hilos están razonablemente bajo su control, es decir, no están llamando a nada que potencialmente va a esperar para siempre sin que se ejecute su código, lo cerraría con un indicador simple (pero seguro para subprocesos: ¡use volátiles!).
Vea este artículo para ver un ejemplo en C #: el equivalente de Java debería ser fácil de resolver. La interrupt
llamadas no tendrá ningún efecto hasta que el siguiente hilo espere y stop
puede dejar su aplicación en un estado difícil de predecir. Siempre que sea posible, realice un cierre ordenado y limpio.
Usa tu_intervalación_de.thread.y revisa tu hilo si Thread.interrupted () devuelve true. Si es así, cierra el hilo correctamente.
He usado este patrón de ejemplo muy simple. Parece que funciona y es fácil de entender e implementar.
private Thread m_CleanupThread = null;
public void threadCleanUp(){
m_CleanupThread = new Thread(this);
m_CleanupThread.Start();
}
Este hilo terminará y el recolector de basura hará el resto.
Hay una pregunta con un tema muy similar: