Sé usar System.exit (0) puede terminar un programa java, por ejemplo, si tengo una ventana JFrame, se cerrará y finalizará el programa, pero me pregunto cuántas otras maneras, se puede cerrar y el programa ser terminado? Incluyendo cuando ocurre un error, ¿se cerrará el programa y se cerrará el JFrame?¿De cuántas maneras puede finalizar un programa de Java?
Respuesta
Otra forma en que el programa Java termina es cuando se ejecuta la última instrucción en el código java. También cuando se produce el error java.lang.OutOfMemory, el programa finaliza de forma anómala. Esto ocurre cuando la Máquina Virtual Java no puede asignar un objeto porque está sin memoria, y el recolector de basura no puede poner más memoria disponible.
He respondido su pregunta en el contexto de las GUI de Swing por haber mencionado JFrame
.
- Con una GUI Swing, el hilo Despacho de evento registrará todas las excepciones que se produzcan pero no finalizará la aplicación en esta situación.
- Del mismo modo, si otro subproceso lanza una excepción y finaliza el subproceso Despacho de evento se asegurará de que la aplicación se mantenga activa (ya que no es un subproceso de daemon).
- Un punto final: Si desea que su aplicación a darse por terminada cuando un JFrame está cerrado, es necesario llamar a:
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
lo contrario, el marco simplemente se ocultará cuando se cierra, pero la aplicación seguirá correr.
Aquí es todo lo que puedo pensar en la parte superior de mi cabeza:
principales() devuelve (ya sea un valor o un vacío() principales termina de ejecutar su última declaración)
programa produce una excepción no capturada
System.exit (int)
se puede accidente?
En el caso de un cierre JFrame, creo que no habría un controlador onClose() que, o bien llama System.exit (0) o hace que el método principal para volver.
En referencia a 1 .: si hay subprocesos no deaemon en ejecución, el programa continuará ejecutándose incluso después de que main() haya retornado. – jeremytrimble
JFrames tiene un método llamado 'setDefaultCloseOperation' que toma una de estas constantes como argumento:' WindowConstants.HIDE_ON_CLOSE' (valor predeterminado), 'WindowConstants.DO_NOTHING_ON_CLOSE',' WindowConstants.DISPOSE_ON_CLOSE', y 'JFrame.EXIT_ON_CLOSE' – Powerlord
Tenga a mano una mirada a esta respuesta con respecto al final de main(): http://stackoverflow.com/questions/2070951/main-function-does-not-return-anything-why/2070968#2070968 –
Un programa Java finaliza cuando finaliza el último indicador de Subproceso sin daemon, o cuando se llama a un método que apaga la máquina virtual (System.exit(), Runtime.exit(), Runtime.halt() y posiblemente un un poco mas).
Cualquier otra cosa depende de las bibliotecas que llaman a System.exit() (como JFrame con EXIT_ON_CLOSE).
Nit-picking, pero ¿y si has registrado un gancho de apagado que entra en un ciclo infinito cuando se ejecuta? – Adamski
También puede usar Application.exit().
Bastante seguro, 'Aplicación' es una clase de framework y no parte del JRE. ¿Podría proporcionar el nombre de clase calificado completo? –
Para agregar a otras respuestas:
- Si el proceso que aloja la VM se finalizaron de manera forzada, el programa va a desaparecer espontáneamente
- Lo mismo sucede si el enchufe se tiró de la máquina que aloja la VM :)
ROFL. +1 para ese – DVK
No estoy del todo bromeando :) Este es en realidad un escenario importante para un servidor que necesita fallar sin perder datos. –
+1 ese es uno de los escenarios más desagradables. Si no fuera por eso, la mayoría del software de alta disponibilidad podría ser ** mucho ** más rápido. –
Puede finalizar un programa Java en ejecución externamente. Eliminando el proceso java.exe del administrador de tareas (en el caso de Windows)
- 1. ¿Cómo finalizar un programa en C++ después de un error?
- 2. Calcular cuántas maneras puede agregar tres números para que equivalen a 1.000
- 3. ¿De cuántas maneras puede llamar a una subrutina e ignorar su prototipo en Perl?
- 4. ¿Cuántas veces se ejecutó el programa? C#
- 5. ¿De cuántas maneras se pueden agregar métodos a un objeto Ruby?
- 6. Ejecutar un programa Java de nuestro programa Java
- 7. ¿Puede un idioma ser completo pero incompleto de otras maneras?
- 8. Cómo finalizar un programa en Perl: ¿salir o morir?
- 9. python: cómo finalizar un hilo cuando finaliza el programa principal
- 10. ¿Puede la salida() no finalizar el proceso?
- 11. ¿Cuántas bases de datos puede manejar MySQL?
- 12. maneras de ejecutar Python
- 13. ¿Cuántas consultas/segundo de MySql puede manejar un servidor?
- 14. Cuántas interfaces puede implementar un archivo de clase
- 15. ¿De qué maneras puede crear una cadena con 2000 "espacios"
- 16. Explicación de salida de un programa java
- 17. ¿Cuántas maneras posibles diferentes pueden sentarse las personas en una mesa redonda?
- 18. programa de tareas del temporizador de Java
- 19. ¿Cómo puedo terminar ncurses sin finalizar el programa C++?
- 20. IE Pregunta: ¿Cuántas CSS incluye puede manejar?
- 21. ¿Maneras de hash un vector numérico?
- 22. Maneras ingeniosas de dibujar un campo estelar
- 23. ¿Cuántas conexiones máximas puede tener Oracle?
- 24. ¿Qué método se utiliza para finalizar la ejecución del programa Java en el medio?
- 25. ¿Cuántas conexiones puede manejar sqlite 3?
- 26. ¿Cuántas URL exclusivas puede soportar goo.gl?
- 27. Comprender un gran programa de Java
- 28. Socket.io: ¿Cuántas conexiones simultáneas puede manejar WebSockets?
- 29. diferentes maneras de llenar un vector
- 30. Finalizar la aplicación de línea de comandos de Java correctamente
Solo si main() es nulo. – bkritzer
¿Qué significa esto? ¿Qué ocurre si se ejecuta la última línea de código ejecutada por un hilo determinado (por ejemplo, dentro de Runnable) pero hay otros hilos no daemon vivos? – Adamski
si, solo si main() es nulo. – Thunderhashy