Runtime.addShutdownHook用法】的更多相关文章

一.什么是ShutdownHook? 在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源.平滑退出的功能. 使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用: 1. 程序正常退出 2. 使用System.exit() 3. 终端使用Ctrl+C触发的中断 4. 系统关闭 5. 使用Kill pid命令干掉进程 Runtime.java中相关方法源码 public void addShutd…
原文出处:http://kim-miao.iteye.com/blog/1662550.感谢作者的无私分享. 一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方法,便顺便梳理一下. void java.lang.Runtime.addShutdownHook(Thread hook) 该方法用来在jvm中增加一个关闭的钩子.当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程.其中shutdownH…
转自:https://www.cnblogs.com/mingforyou/p/3551199.html Java Runtime.exec()的使用 Sun的doc里其实说明还有其他的用法: exec(String[] cmdarray, String[] envp, File dir) Executes the specified command and arguments in a separate process with the specified environment and wo…
以前在开发时只知道依靠数据库事务来保证程序关闭时数据的完整性. 但有些时候一个业务上要求的原子操作,不一定只包括数据库,比如外部接口或者消息队列.此时数据库事务就无能为力了. 这时我们可以依靠java提供的一个工具方法:java.lang.Runtime.addShutdownHook(Thread hook) addShutdownHook方法可以加入一个钩子,在程序退出时触发该钩子. (退出是指ctrl+c或者kill -15,但如果用kill -9 那是没办法的,具体有关kill的sign…
序言: 每一个Java程序都可以为JVM增加一个关闭钩子.JVM将在关闭之前执行关闭钩子中的指令. 问题: 一个程序可能需要在退出前执行一些指令.程序可能由于下列原因而退出: 所有的线程已经执行完毕 调用System.exit() 用户输入Ctrl+C 系统级关闭或用户注销 适用场景: 保存应用状态,例如,当多数IDE退出时,它们将记忆最后的视图有哪些. 关闭某些数据库连接. 将应用关闭的消息发送给系统管理员. 解决方案: 关闭钩子支持所有这些场景.应用可以增加一个关闭钩子,JVM将在应用退出时…
Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭.所以这些钩子可以在jvm关闭的时候进行内存清理.对象销毁等操作.…
今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭.所以这些钩子可以在jvm关闭的…
今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭.所以这些钩子可以在jvm关闭的…
public class RuntimeTest { public static void main(String[] args) { Runtime run =Runtime.getRuntime(); try { run.exec("mstsc.exe"); } catch(Exception e) { e.printStackTrace(); } } }…
什么是runtime? 1> runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型.C语言函数)2> 实际上,平时我们编写的OC代码,底层都是基于runtime实现的* 也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码) runtime有啥用? 1> 能动态产生一个类.一个成员变量.一个方法2> 能动态修改一个类.一个成员变量.一个方法3> 能动态删除一个类.一个成员变量.一个方法 常见的函数.头文件 #import &…