Java程序优雅关闭的两种方法
来源:互联网 发布:java声明变量意思 编辑:程序博客网 时间:2024/05/16 04:29
使用java编写大型系统时,往往需要在程序被kill时将内存中的一些临时数据和状态处理掉,这里称之为优雅关闭。介绍两种比较典型的方法:
1. 调用Runtime.getRuntime().addShutdownHook()方法,添加结束时运行的线程。
public void stopGracefully() { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { } });}
2. 实现SignalHandler
public class KillHandler implements SignalHandler { public void registerSignal(String signalName) { Signal signal = new Signal(signalName); Signal.handle(signal, this); } @Override public void handle(Signal signal) { if (signal.getName().equals("TERM")) { // } else if (signal.getName().equals("INT") || signal.getName().equals("HUP")) { // } else { // } }}
程序启动时实例化一个KillHandler,注册TERM信号。
KillHandler killHandler = new KillHandler();
killHandler.registerSignal("TERM");
这样,在进程被kill的时候就会触发KillHandler的handle方法。
两种方法的区别在于,第一种方法在进程被kill的时候main函数就已经结束了,仅会运行shutdownHook中run()方法的代码。
而第二种方法中handle函数会在进程被kill时收到TERM信号,对main函数的运行不会有任何影响,我们需要自己在main函数中添加布尔类型的flag,当收到TERM信号时修改该flag,程序便会正常结束。
0 0
- Java程序优雅关闭的两种方法
- 优雅关闭socket的方法:SO_LINGER
- 两种关闭窗口的方法
- 关闭窗口的两种方法
- Java进程优雅关闭
- Java程序发送邮件的两种方法
- Java程序发送邮件的两种方法
- Java程序发送邮件的两种方法
- Java程序发送邮件的两种方法
- PHP程序调用java类的两种方法
- 有关PHP程序调用java类的两种方法
- java程序将汉字转成拼音的两种方法
- java程序将汉字转成拼音的两种方法
- java程序将汉字转成拼音的两种方法
- java程序将汉字转成拼音的两种方法
- java程序将汉字转成拼音的两种方法
- java程序将汉字转成拼音的两种方法
- java程序打开本地文件程序的两种方法,以及java程序中打开网页
- 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
- android退出,销毁所有activity
- cisco SG300交换机 + cisco2901路由器 划分VLAN 上网
- 监听网络的变化
- 基于简单对象访问协议的Demo
- Java程序优雅关闭的两种方法
- java中String和StringBuffer和StringBuilder
- 欢迎使用CSDN-markdown编辑器
- 我们真的需要“小程序”么?HTML5 老兵如是说
- linu下C语言之BMP图片操作编程(中)
- 新了解的几个caffe层
- ubuntu安装gearmand
- 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
- Android-studio原生微信第三方登录、分享