public class Main extends Thread {
@Override
public void run() {
for(int i = 0; i try {
TimeUnit.SECONDS.sleep(3L);
} catch (InterruptedException e) {
// ignore
}
}
}
public static void main(String[] args) {
new Main().start(); // thread
/* shutdown hook */
Runtime.getRuntime().addShutdownHook(
new Thread(){
public void run() {
System.out.println("this is shutdown hook");
/*
while(true){
// 发生死锁
}
*/
}
}
);
//Runtime.getRuntime().exit(0); // 等同于 System.exit(n); 会调用hook
Runtime.getRuntime().halt(0); // 不调用 hook
System.err.println("the main exit(0)");
}
}
如程序中写的那样,如果hook发生死锁,那么Runtime.getRuntime().exit(0)或者System.exit(0)将永远不会被执行.这里介绍下
ShutdownHook,Java 虚拟机会为了响应以下两类事件而关闭:
- 1.程序正常退出,这发生在最后的非守护线程退出时,或者在调用
exit
(等同于 System.exit
)方法时。
- 2.为响应用户中断而终止虚拟机,如键入 ^C;或发生系统事件,比如用户注销或系统关闭。
关闭hook只是一个已初始化但尚未启动的线程。虚拟机开始启用其关闭序列时,它会以某种未指定的顺序启动所有已注册的关闭钩子,并让它们同时运行。运行完所有的钩子后,如果已启用退出终结,那么虚拟机接着会运行所有未调用的终结方法。最后,虚拟机会暂停。注意,关闭序列期间会继续运行守护线程,如果通过调用 exit
方法来发起关闭序列,那么也会继续运行非守护线程。
一旦开始了关闭序列,则只能通过调用 halt
方法来停止这个序列,此方法可强行终止虚拟机。
分享到:
相关推荐
linux基础命令记录,在慕课网学习Linux时的第一个课程完结的基础记录。
HALT内部培训教材
创新性的 HALT HALT系统 彻底解决了传系统 彻底解决了传系统 彻底解决了传HALT 系统 20 多年的设计缺陷,采 多年的设计缺陷,采 多年的设计缺陷,采 用专利的气锤布置设计、通过有限元分析优化台面结构集成 用专利的...
halt 超强低功耗
要实现最低功耗CPU的IO口要输出确定的电平;例程除了按键与LED接口其他IO全部输出低; 还需要使用超低功耗... 使能,即可通过HALT指令进入ACTIVD-HALT模式; 实测电流大约1.4ua RTC中断唤醒,LED以一定频率闪烁
在STM8单片机上使用IAR编译器寄存器实现 单片机低功耗 Halt模式
高加速寿命试验的资料与文章,可帮助硬件开发人员提高产品可靠性与寿命,大大缩短开发周期。
可靠性测试中的HALT实验与HASS实验.pdf
Linux halt命令 若系统的 runlevel 为 0 或 6 ,则Linux halt命令关闭系统,否则以 shutdown 指令(加上 -h 参数)来取代。 使用权限:系统管理者。 语法halt [-n] [-w] [-d] [-f] [-i] [-p] 参数说明: -n : 在关机...
HALT & HASS & HASA试验基础简介
designer wishes to halt execution of a program and examine the state of the processor by invoking debugger software. A debug exception (#DB) is generated when a memory or I/O access is made to a ...
stm8l052 是一个低功耗单片机, halt低功耗模式可以最大降低功耗
linux halt命令参数及用法详解.docx
halt命令用来关闭正在运行的Linux操作系统,如果是线上跑了业务的服务器,执行此命令需谨慎。 halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法格式:halt ...
专治各种疑难杂症的lauterbach脚本cmm文件。劳特巴赫T32调试器在PowerPC MCU上电的瞬间直接连接并且暂停e200内核,从内核接管的第一条PC... Request user to power cycle target and connect with SYStem.Mode.StandBy
基于atm8l151k4单片机的低功耗模式配置例程
stm8 HALT mode, low power
新能源检测技术材料化学元器件汽车电子热分析实验室仪器温度 相关技术文档
IAR开发环境中在STM8S003单片机上实现低功耗模式 活跃停机 Active halt,使用寄存器开发。
新能源检测技术材料化学元器件汽车电子热分析 相关技术文档