Cuando mi aplicación está lista para salir, ya sea cerrando una ventana o invocando el método System.exit(). ¿Tengo que detener manualmente los hilos que pude haber creado o Java se encargará de eso por mí?¿Debo manualmente detener los hilos en Java?
9
A
Respuesta
11
En los casos que utiliza System.exit(). Todos los hilos se detendrán ya sea que sean demonios o no.
De lo contrario, la JVM detendrá automáticamente todos los hilos que son hilos daemon configurados por Thread.setDaemon (true). En otras palabras, el jvm solo saldrá cuando solo los hilos restantes sean todos hilos daemon o no hilos en absoluto.
Considere el siguiente ejemplo, continuará ejecutándose incluso después de que regrese el método principal. pero si lo configura en daemon, terminará cuando finalice el método principal (el hilo principal).
public class Test {
public static void main(String[] arg) throws Throwable {
Thread t = new Thread() {
public void run() {
while(true) {
try {
Thread.sleep(300);
System.out.println("Woken up after 300ms");
}catch(Exception e) {}
}
}
};
// t.setDaemon(true); // will make this thread daemon
t.start();
System.exit(0); // this will stop all threads whether are not they are daemon
System.out.println("main method returning...");
}
}
3
Si desea detener los hilos antes de salir con gracia, los ganchos de cierre pueden ser una opción.
parece:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
//Stop threads }
});
Ver: hook-design
Cuestiones relacionadas
- 1. sin detener todos los hilos en gdb
- 2. ¿Cuándo debo usar los hilos?
- 3. Detener un hilo en Java?
- 4. Cómo detener manualmente en BroadcastReceiver androide
- 5. ¿Cómo detener los hilos del kernel de Linux en rmmod?
- 6. ¿Debo cerrar manualmente un ifstream?
- 7. ¿Hilos dentro de hilos en Java?
- 8. ¿Debo usar horquilla o hilos?
- 9. Hilos en Java
- 10. Hilos Java vs Hilos OS
- 11. Instalando Java manualmente en Windows?
- 12. ¿Cómo correlaciona Sun JVM los hilos de Java con los hilos de Windows?
- 13. ¿Cómo están programados los hilos java?
- 14. Los hilos java se eliminan cuando terminan
- 15. ¿Debo desinstalar manualmente todas las gemas dependientes?
- 16. Métodos Java Ejecutando en hilos
- 17. hilos de java en libGDX
- 18. ¿Es necesario detener explícitamente todos los hilos antes de salir de una aplicación Win32?
- 19. reutilización de hilos java
- 20. Cómo aprender acerca de los hilos, especialmente en Java
- 21. Manera alternativa a los hilos en Android
- 22. Cargando un Java Charset manualmente
- 23. sincronización de hilos java
- 24. Detener un sistema JADE (agentes Java)
- 25. Cómo detener la ejecución de Execution ThreadPool en java?
- 26. ¿Cómo configuro manualmente un DataSource en Java?
- 27. ¿Debo insertar manualmente la información de tamaño de datos en una transferencia TCP?
- 28. hilos Tomcat Java vs roscas
- 29. Hilos preventivos Vs Hilos no preceptivos
- 30. ¿Debo eliminar manualmente el zócalo después de cerrarlo?