[发明专利]JVM安全退出的方法在审
| 申请号: | 201810988058.X | 申请日: | 2018-08-28 |
| 公开(公告)号: | CN109254828A | 公开(公告)日: | 2019-01-22 |
| 发明(设计)人: | 李怡虹;陈爱君;戴德军 | 申请(专利权)人: | 四川爱创科技有限公司 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/445 |
| 代理公司: | 成都虹桥专利事务所(普通合伙) 51124 | 代理人: | 李凌峰 |
| 地址: | 621000 四川省绵阳市安州*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 信号类型 退出 方法体 调用 参数初始化 运行时环境 获取信号 继续执行 软件开发 初始化 线程 后台 安全 创建 开发 | ||
本发明涉及软件开发领域,针对接到JVM关闭消息后后台无法执行完需要执行的任务再退出JVM的问题,提出了一种JVM安全退出的方法,包括:创建实现了SignalHandler接口的类的对象,记为对象一,获取信号类型,将信号类型作为参数初始化signal类的对象,记为对象二;对象二调用Signal类的handle方法,对象一及信号类型作为参数传入handle方法中,在handle方法的方法体中存放当接收到所述信号类型的信号时仍需继续执行的任务;初始化shutdownhook线程并将其注册到运行时环境中;在handle方法体最后调用退出JVM的方法。本发明适用于JAVA软件开发领域。
技术领域
本发明涉及JAVA软件开发领域,特别涉及一种JVM(JAVA虚拟机)安全退出的方法。
背景技术
目前,JVM关闭的方式大致有如下几种:
1)System.exit(0)方式:该方式由于直接写在代码中,不由人为控制是否关闭系统,只要逻辑流程代码运行到了当前步骤就会自动执行JVM关闭,该方式较为死板无法接收外部的关闭消息;
2)仅通过获取kill命令的信号来关闭的方式:采用kill-9的命令来实现强制将进程杀掉,但这种方式很不友好,并没有给进行善后的方式,而kill-15也许会给目标进程一个清理善后工作的机会,但也有几率可能因为代码原因导致杀不死主进程;
3)仅采用shutdownhook方式:shutdownhook函数在进程被kill的时候main函数就已经结束了,仅会运行shutdownHook所注册线程中run()方法的代码,而现在多数线程任务都是异步执行以加快应用的响应速度,对于通过线程或线程池进行的异步化,在JVM关闭时后台执行的异步线程的操作可能尚未完成。
发明内容
本发明所要解决的技术问题是:克服接到JVM关闭消息后后台无法执行完需要执行的任务后再退出JVM的问题,提出一种JVM安全退出的方法。
本发明解决上述技术问题,采用的技术方案是:
JVM安全退出的方法,包括如下步骤:
A、创建实现了SignalHandler接口的类的对象,记为对象一,获取信号类型,将信号类型作为参数传入signal类的构造函数来初始化signal类的对象,记为对象二;
B、对象二调用Signal类的handle方法,对象一及信号类型作为参数传入handle方法中,在handle方法的方法体中存放当接收到所述信号类型的信号时仍需继续执行的任务;
C、初始化shutdownhook线程并将shutdownhook线程注册到运行时环境中;
D、在handle方法的方法体最后调用退出JVM的方法。
进一步的,所述信号类型根据所处操作系统的不同进行不同的赋值。
优选的,当所处操作系统为Windows系统时,所述信号类型为INT,当所处操作系统为Linux系统时,所述信号类型为USR2。
进一步的,所述任务采用线程的方式进行调用。
优选的,所述shutdownhook线程仅为一个。
优选的,步骤D中,所述调用退出JVM的方法为运行时环境对象的exit(0)方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川爱创科技有限公司,未经四川爱创科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810988058.X/2.html,转载请声明来源钻瓜专利网。





