问题描述:
请问在java在如何关闭java自己启动的程序呢?
解析:
我详细说一下吧
java程序启动之后,JVM(java虚拟机)会实例化一个Runtime类,这是一个运行时类实例,包含这个java程序运行的所有信息,一个程序会实例化一个Runtime类且只能实例化一个Runtime类。我们可以通过这个Runtime类实例 *** 作程序的运行。它的exit(int status)方法会终止程序的运行。例:
Runtime.getRuntime().exit(0)
其中参数status表示状态,0表示正常退出,非0表示异常退出。非0参数有什么用呢?
addShutdownHook(Thread hook)方法可以将一个Thread可程序的关闭hook(挂/联系)起来,程序退出前,会执行这个方法,这样我们可以根据退出状态作相应的善携穗后 *** 作。
另外,System.exit(int status)也是调用这个Runtime类实例的退出方法来间接实现程序的退出的。
再加一点,Runtime类可以创建子进程,如下:
Process p=Runtime.getRuntime().exec("notepad")
这腔隐游个语句将会创建一个记事本程序(它是Runtime类创建的伍销子进程)
p.destroy()
这个语句终止刚才创建的子进程。
return语句和其他控制结束语句的区别Java中结束语句主要有四类:return,break,continue以及goto。但是goto不常用,所有此文不对此讨论。
(1)return语句:是指结束该方法,继续执行方法后的语句。
(2)break语句:是指在循环中直接退出循环语句(for,while,do-while,foreach),break之后的循环体里面的语句也执行。
(3)continue语句:是指在循环中中断该次循环语句(for,while,do-while,foreach),本次循环体中的continue之后语句不执行,直接跳到下次循环。
return在try-catch-finally语句中的使用
若在 try或改慎搏catch语句里面有return语句,finally语句和return语句的执行顺序问题:
若有finally语句,则无论如何,都会执行该语句,在try或catch中的return语句会将它的返回值压入栈内,然后执行finally语句,当finally执行完成后,若finally语句里有return语句,则执行return语句并结束。若finally没有return语句,则返回被保存的栈里的return语句,再执行。然而,在压栈时候,要注意压入栈内的是什么东西,是值本身还是引用,若是引用则引用的值会改变核祥,若是变量值,则不会改变。
下面是一位大牛分析的,很给力,孝察大家一定要仔细看下:finally小特性。
return语句在try-catch-finally中使用情形:
(1)若try执行成功后返回,在try和catch里面都执行return语句,这样情况与4相同,但该方法更佳,因为,可以立刻查看出异常的抛出情况。
(2)若只需要在try和catch都执行后还需继续执行相关语句,则在try-catch所有语句后执行return语句;
(3)若catch执行后返回,则在catch和所有语句后执行return语句;
(4)若try执行成功后返回,则在try和全部语句后使用return语句;
java中exit表示的关闭JVM程序,但是不释放内存,举例:System.exit(0)//表示正常程序的关闭,执行的亮迅是以下 *** 作:
public static void exit(int status) {
Runtime.getRuntime().exit(status)
}
备握键老注:如果是 0表示正常关闭,如果是非0表示异常关闭,如果想释放内存的话,用“dispose()”关闭当前程序,并释放段升资源。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)