java程序自动重启_让Java程序自动重启的实现方法(推荐)-程序员宅基地

技术标签: java程序自动重启  

要让一个java程序自动重启还真不容易的,重启分两步,首先是结束程序,这个简单,只要运行System.exit()就可以了。然后是启动,这个就难了,这个时候程序都已经结束了,就像一个人死了就不可能再自己站起来,怎么办呢?让别人帮他扶起来,幸运的是,我也有这样的条件,我要重启的那个程序并不孤独,还有另一个java程序和它一起在运行,我只要让运行着的那个程序来启动它就可以了。

但运行着的那个程序它怎么知道要关闭的那个程序在什么时候关闭呢,如果不知道就不能贸然启动。只有让要关闭的那个程序在自杀前先通知一下了,就是发个信息给运行着的那个程序,告诉它,我要自杀了,你准备重启我吧。好了,这个也解决了,可以重启了。

但第二个问题又来了,怎么启动呢,一般java程序都是用批处理来启动的,但在程序里像这样调用批处理文件却行不通:

try

{

Runtime.getRuntime().exec("要启动的批处理.bat");

}

catch(Exception e)

{

e.printStackTrace();

}

在java程序里只能调用可执行程序来运行,批处理是不能运行的。怎么办?没办法了吗?找到一个软件VisualBat,用它把批处理编译成可执行程序,这样就可以了。

好了,现在可以关闭,也可以启动了,但还有一个问题:我要一天启动一次而且还要在下午5点时重启,这个要考虑一下了,最后这样做,用两个变量,一个记下程序启动时的日期,一个记下当前是几点,只要所记的日期不是今天而且现在又是5点,就可以重启了。

本以为完成了,但程序闪了一下就不见了。仔细想了一下,可能结束程序与启动程序间隔时间太短了,旧程序还没有完全释放端口,新程序就来抢端口了,由于新程序没抢到端口,于是就自己关闭了。这个也简单,只要在启动前先等一等,Thread.sleep(5000) ,等上5秒,让端口完全释放,这时再启动就可以了。确实如此,这个问题就这样解决了。

以上这篇让Java程序自动重启的实现方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39611161/article/details/114256782

智能推荐

Android4.4.4之bug总结_tvbox安卓4.4-程序员宅基地

文章浏览阅读2.4k次。我们平时做Android手机的平台适配工作,绕不开的问题就是对不同Android版本的适配,以下总结了在实际应用中Android4.4.4遇到的一些问题。应用安装后运行异常我们的应用在升级以后,理论上来说,运行的是最新的apk逻辑,然而,在Android4.4.平台上面,如果是系统预置应用,运行的是旧代码。如果minifest的四大组件有删除,就会出现类似于minifest中定义的类找不到等问题而产生崩溃。总结:此问题目前通过系统重启,问题会自动消失。主要是因为系统应用开机的时候预加载,即使新的ap_tvbox安卓4.4

Windows shell 扩展编程教程详解_microsoft.windows.shell.dll怎么引用-程序员宅基地

文章浏览阅读3k次。所谓的Shell扩展就是能够添加某种功能到Windows Shell的COM对象。Windows里有着各种各样的扩展,但关于Shell扩展的原理以及如何编写Shell扩展的文档却很少。如果你想深入地了解Shell各方面的细节,危险漫步特别推荐Dino Esposito的著作《Visual C++ Windows Shell Programming》。不过这些是英文的书籍,当然你可以参照词典进行阅读。_microsoft.windows.shell.dll怎么引用

解决《CPU设计实战》第四章实践交叉编译时报错mipsel-linux-ld: section .MIPS.abiflags LMA overlaps section .data LMA_section .arm.__at_0x00070000 lma [00001bdc,00001be-程序员宅基地

文章浏览阅读1.6k次。解决《CPU设计实战》4.3.1节快速上手CPU设计的开发环境的第4步,编译测试程序时,报错mipsel-linux-ld: section .MIPS.abiflags LMA overlaps section .data LMA的问题,或是其他相似的问题也可参考。_section .arm.__at_0x00070000 lma [00001bdc,00001beb] overlaps section .code

QR二维码编码原理_二维码qr编码算法是什么-程序员宅基地

文章浏览阅读8.4k次,点赞4次,收藏17次。QR码生成原理(一)一、什么是QR码QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示一下:这个图如果被正确解码,应该看到我的名字和邮箱。二、QR码的特点说到QR码的特点,一是高速读取(QR就是取自“Quick Response”的首字母),对读取速度的体验源自于我..._二维码qr编码算法是什么

初步解析小程序前端框架vant-ui源码_微信小程序vantpopup源码-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏2次。初步解析小程序前端框架vant-ui源码本学期的系统分析课程要求我们做一个小项目,我们以微信小程序为框架进行了项目的前端搭建,在UI上以开源组件库vant-ui为基础进行了设计,其中用到了许多该开源库的设计,对于项目前端起到了很大的帮助。组件库的使用教程在 https://youzan.github.io/vant-weapp/#/intro ,介绍说明比较详细且简单,因此这里不再赘述,这里..._微信小程序vantpopup源码

树状数组上二分-程序员宅基地

文章浏览阅读3.2k次。树状数组+二分考虑一个简单的问题,维护一个数组,支持每次修改一个数的值,保证每时每刻每个数都为非负数。每次查询求前缀和kkk lower_bound 的值。对于修改,可以用树状数组、线段树等数据结构维护。二分查找可以在[l,r][l,r][l,r]的范围上二分答案,mid=⌊l+r2⌋mid = \lfloor \frac{l+r}{2} \rfloormid=⌊2l+r​⌋,验证midmidmid的前缀和是否大于kkk,并调整midmidmid。时间复杂度O(log22n)O(log^2_2n)O_树状数组上二分

随便推点

STM32GPIO固件库点亮LED灯_stm32 gpio亮灯-程序员宅基地

文章浏览阅读1k次。STM32F103指南者用GPIO固件库点亮LED灯使用两个按键分别控制两种灯的亮灭,原来是按下去松开的时候灯亮,怎么改成按下去不用松开就亮啊_stm32 gpio亮灯

虚拟内存_matlab2010 虚拟内存-程序员宅基地

文章浏览阅读138次。程序代码和数据。对所有的进程来说,代码是从同一固定地址开始,紧接着的是和C 全局变量相对应的数据位置。堆。代码和数据区在进程一开始运行时就被指定了大小,与此不同,当调用像 malloc 和 free 这样的 C 标准库函数时,堆可以在运行时动态地扩展和收缩。共享库。大约在地址空间的中间部分是一块用来存放像 C 标准库和数学库这样的共享库的代码和数据的区域。栈。位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。特别地,每次我们调用..._matlab2010 虚拟内存

npm运行报错Error: EEXIST: file already exists解决办法_npm run dev error: eexist: file already exists, mk-程序员宅基地

文章浏览阅读6.5k次。如果你百度了很多方法都没有解决的话,请用管理员权限打开cmd,然后再输入npm安装命令试一试。反正我解决了_npm run dev error: eexist: file already exists, mkdir 'c:\windows\system32\c

物联网能为企业带来哪些创新?看看这些成功案例!-程序员宅基地

文章浏览阅读108次。物联网(Internet of Things,IoT)是指通过互联网连接各种设备和物品,使它们能够相互通信和交换数据的网络。在这个数字化时代,物联网已经成为了企业数字化转型的重要驱动力。通过物联网技术,企业可以实现对企业数据的实时监控、数据分析和智能化决策,从而提高企业的效率和效益,实现更高的商业价值。下面,我们将介绍一些成功的物联网应用案例,以帮助您更好地了解物联网的潜力。

阶次跟踪的角域重采样matlab,一种基于包络提取的高精度无键相信号阶次跟踪方法及系统与流程...-程序员宅基地

文章浏览阅读1.7k次。本发明涉及一种基于包络提取的高精度无键相信号阶次跟踪方法及系统,属于故障诊断技术与信号处理分析技术领域。背景技术:传统的阶次齿轮箱故障信号特征提取针对的是恒定转速运转下的测试信号,但对于工程机械等现代大型复杂机械装备中,恶劣的工作环境导致其运行工况复杂,转速和负荷等工况参数的变化将导致其振动信号具有明显的非平稳性,因此其采集的振动信号不直接满足傅里叶变换的平稳性要求。针对此问题出现了阶次跟踪方法,..._matlab阶次跟踪

python高阶知识之——字典/集合推导式_字典推导式 key自增怎么写-程序员宅基地

文章浏览阅读205次。什么是推导式:推导式是用来快速的生成数据1、推导式类型2、字典推导式推导式结合条件语句语法:dict = { key:value for i in xxx if 条件}推导式结合三元运算符语法:dict = { key:value if 条件 else key2:value2 for i in xxx}3、字典推导式原则4、注意事项5、集合推导式......_字典推导式 key自增怎么写

推荐文章

热门文章

相关标签