一个很少有人知道的方法,system.exit()方法和参数的讲解,及其与return的区别

system.exit(1) 和 system.exit(0)用法与作用

system.exit(0):正常退出,程序正常执行结束退出
system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出,

System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西

System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序

System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层

public class HelloGoodbye{
    
    

	try{
    
    
	
		System.out.println(“Hello World”);
		
		System.exit(0);
	
	} finally {
    
    
	
		System.out.println(“Goodbye World”);
	
	}
}

上面这段代码会打印出什么呢?要知道答案需要了解System.exit(0)这个方法在执行过程中到底发生了哪些事情。API文档上描述System.exit方法会导致当前运行线程停止并使其它线程都终止,因此上面这段代码中的finally代码块不会被执行。

进一步探索System.exit被调用后的行为,它在虚拟机在退出前会执行两个清除任务。第一,它会执行所有通过Runtime.addShutdownHook注册的shutdown hooks.它能有效的释放JVM之外的资源。第二,执行清除任务,运行相关的finalizer方法终结对象。

Guess you like

Origin blog.csdn.net/m0_51945027/article/details/121510413