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

原文出处:http://kim-miao.iteye.com/blog/1662550.感谢作者的无私分享. 一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方法,便顺便梳理一下. void java.lang.Runtime.addShutdownHook(Thread hook) 该方法用来在jvm中增加一个关闭的钩子.当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程.其中shutdownH…
一.什么是ShutdownHook? 在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源.平滑退出的功能. 使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用: 1. 程序正常退出 2. 使用System.exit() 3. 终端使用Ctrl+C触发的中断 4. 系统关闭 5. 使用Kill pid命令干掉进程 Runtime.java中相关方法源码 public void addShutd…
RunTime的一些用法   RunTime简介 RunTime简称运行时.OC就是运行时机制,其中最主要的是消息机制 对于OC来说,在编译的时候并不能决定真正调用哪个函数,只有真正运行时才会根据函数名找到对应的函数来调用NSString *obj = [[NSData alloc] init];例如以上代码,在编译时是NSString类型,运行时是NSData类型 OC在编译阶段可以调用任何函数,即使这个函数没有实现,只要声明过就不会报错 RunTime用法介绍 1.发送消息 OC方法调用的本…
以前在开发时只知道依靠数据库事务来保证程序关闭时数据的完整性. 但有些时候一个业务上要求的原子操作,不一定只包括数据库,比如外部接口或者消息队列.此时数据库事务就无能为力了. 这时我们可以依靠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将在应用退出时…
今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭.所以这些钩子可以在jvm关闭的…
addShutdownHook作为一个正常关闭Java程序的途径,其实是非常有用的. 有JDK文档可知,当程序正常退出,或者为响应用户中断而终止虚拟机的时候,就会调用里面的线程,来作最后的退出处理. ShutdownHook只是一个已初始化但为启动的线程.当JVM开始执行关闭序列时,它才开始已某种随机程序注册和并行执行shutdown hooks.这是关闭Java程序的一个重要的途径.在shutdown hooks里,可以执行各种关闭和释放资源的方法,例如: private void setup…
来源:haojingxue_iOS 链接:http://www.jianshu.com/p/3182646001d1 阅读了多篇运行时的文章,感觉都很不错,从几篇文章里面提取一些个人认为比较重要的,偏实战的知识点的摘录,另外还结合了个人的创造形成此文.再牛逼的技术和实战结合才有意义,本篇介绍技术尽量和实战联系起来,有些没讲明白的,我给的链接里面都有,所以我就不赘述了... 1)替换系统方法, 2)字典转model, 3)归档, 4)万能控制器跳转 四个偏实战的方法从不同的文章中聚合到这里.没讲明…
转自: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…
转自: http://www.cnblogs.com/nexiyi/p/java_add_ShutdownHook.html 在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码.Java中得ShutdownHook提供了比较好的方案. JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用: 1)程序正常退出…
Sun的doc里其实说明还有其他的用法: exec(String[] cmdarray, String[] envp, File dir) Executes the specified command and arguments in a separate process with the specified environment and working directory. 那个dir就是调用的程序的工作目录,这句其实还是很有用的. Windows下调用程序 Process proc =Ru…
runtime运行时用法之一 --- 交换类的方法,此处简单写了把系统的UIView的setBackgroundColor的方法换成了自定义的pb_setBackgroundColor 首先创建UIView的分类 在分类中导入头文件#import <objc/runtime.h> 实现load类方法 --- 类被加载运行的时候就会调用 分别获取系统setBackgroundColor方法 和自定义的 pb_setBackgroundColor 方法.然后交换 在AFNetworking中也有应…
Java Runtime.availableProcessors()方法用法实例教程.   描述 java.lang.Runtime.availableProcessors() 方法返回到Java虚拟机的可用的处理器数量.此值可能会改变在一个特定的虚拟机调用.应用程序可用处理器的数量是敏感的,因此偶尔查询该属性,并适当地调整自己的资源使用情况. 声明 以下是声明java.lang.Runtime.availableProcessors()方法 public int availableProces…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt219 那就首先说点Runtime类吧,他是一个与JVM运行时环境有关的类,这个类是Singleton的.我说几个自己觉得重要的地方. 1.Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. 2.Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法. 3…
0 预备知识 1 不正确的调用exitValue 2不正确的调用waitFor 3 一种可接受的调用方式 4 调用认为是可执行程序的时候容易发生的错误 5 window执行的良好示例 6 不良好的重定向命令输出 7 良好的重定向输出示例 8 总结 9 问答 0 预备知识 Runtime类是一个与JVM运行时环境有关的Singleton类,有以下几个值得注意的地方: 0.1 Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一得到运行时环境的方法. 0.2…
1转自:https://www.aliyun.com/jiaocheng/849282.html 那就首先说点Runtime类吧,他是一个与JVM运行时环境有关的类,这个类是Singleton的.我说几个自己觉得重要的地方. 1.Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. 2.Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法. 3.Runtime中的exit方法…
转自:http://kim-miao.iteye.com/blog/1662550 一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方法,便顺便梳理一下. void java.lang.Runtime.addShutdownHook(Thread hook) 该方法用来在jvm中增加一个关闭的钩子.当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程.其中shutdownHook是一个已初始化但并不…
所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由此总结几个编程规范. class smallT { public static void main(String args[]) { smallT t = new smallT(); int b = t.get(); System.out.println(b); } public int get()…
. 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 . 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) . 删除AVD(模拟器): android delete avd --name 名称 . 创建SDCard: m…
如果希望你的Java程序只能存在一个实例,可以参考下面的用法. 原文链接:http://blog.csdn.net/yaerfeng/article/details/7264729 Java没有提供这样的机制.从操作系统的观点来看,一个启动的Java Application仅仅是一个JVM的运行实例.运行相同Application的两个实例,仅仅是运行两个无关的JVM.       只有让多个运行实例之间有一个既定的通讯机制就可以保证只有一个实例运行. 方案1:使用Java的加锁文件机制,ide…
概要 本章介绍<Java Puzzles>中关于异常的几个谜题.这一章都是以代码为例,相比上一章看起来更有意思.内容包括:谜题1: 优柔寡断谜题2: 极端不可思议谜题3: 不受欢迎的宾客谜题4: 您好,再见!谜题5: 不情愿的构造器谜题6: 域和流谜题7: 异常为循环而抛 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544353.html 谜题1: 优柔寡断 看看下面的程序,它到底打印什么? public class Indecisive {…
第7章 取消与关闭 这章的主要内容是关于如何使任务和线程安全,快速,可靠的停止下来. 7.1 任务取消 在Java中没有一种安全的抢占方式来停止线程,但是可以使用一些协作机制,比如: 让素数生成器运行1秒后取消(并不会刚好在运行1秒后停止,因为在请求取消的时刻和run方法中循环执行下一次检查之间可能存在延迟): -7.1.1 中断 上面的取消方法有个重要的问题是:如果任务中调用了一个阻塞方法,例如BlockingQueue.put,那么任务可能永远不会检查取消标志,因此永远不会结束.比如: 前面…
bug类型: 1.".equals()" should not be used to test the values of "Atomic" classes.    bug  主要   不要使用equals方法对AtomicXXX进行是否相等的判断   Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2."=+" should not be used instead of "+="   bug…
bug类型: 1.".equals()" should not be used to test the values of "Atomic" classes. bug 主要 不要使用equals方法对AtomicXXX进行是否相等的判断 Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2."=+" should not be used instead of "+=" bug 主要 "…
1.".equals()" should not be used to test the values of "Atomic" classes.bug 主要不要使用equals方法对AtomicXXX进行是否相等的判断Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2."=+" should not be used instead of "+="bug 主要"=+" 与 &…
Shutdown Hook Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码.JAVA中的ShutdownHook提供了比较好的方案. JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在一下几种场景中被调用: 程序正常退出 使用System.exit() 终端使用Ctrl+C触发的中断 系统关闭 OutOfMemory宕机 使用Ki…
Objective-C关键字和概念 @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementation 实现类 @protocol 声明协议 @optional 与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现 @required 与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现 @end 与@interface ,@implementation,@…
System.exit(0)作用   public class HelloGoodbye{ try{ System.out.println(“Hello World”); System.exit(0); } finally { System.out.println(“Goodbye World”); }} 上面这段代码会打印出什么呢?要知道答案需要了解System.exit(0)这个方法在执行过程中到底发生了哪些事情.API文档上描述System.exit方法会导致当前运行线程停止并使其它线程都…
转自http://jiangshuiy.iteye.com/blog/1674235 PS:今天做android助手项目的时候,发现adb push命令执行会卡死,最后发现不能用waitfor阻塞等待执行结果,而且cmd上print的内容是打在进程的error流而不是input流,所以搞了好一会儿,最后这篇文章的提醒下解决了问题,故此转载学习一下. 0 预备知识 1 不正确的调用exitValue 2不正确的调用waitFor 3 一种可接受的调用方式 4 调用认为是可执行程序的时候容易发生的错…
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4257578.html 异常... 17 26.      finally与中断... 17 27.      catch捕获异常规则... 18 28.      重写时方法异常范围... 19…