让Java程序自动重启的实现方法(推荐)

 更新时间:2017年03月08日 11:24:14   投稿:jingxian  
下面小编就为大家带来一篇让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程序自动重启的实现方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java int与integer的对比区别

    Java int与integer的对比区别

    这篇文章主要介绍了Java int与integer的对比区别的相关资料,需要的朋友可以参考下
    2017-01-01
  • java链表的常见简单面试算法题详解

    java链表的常见简单面试算法题详解

    文章总结:本文主要介绍了单链表的基本操作,包括头插法、尾插法、链表翻转、链表成环判断、成环位置判断、成环长度判断,以及有序链表的合并,通过实例和代码示例,详细讲解了每种操作的原理和实现方法
    2025-01-01
  • springboot @PostConstruct无效的解决

    springboot @PostConstruct无效的解决

    这篇文章主要介绍了springboot @PostConstruct无效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java中RabbitMQ消息队列的交换机详解

    Java中RabbitMQ消息队列的交换机详解

    这篇文章主要介绍了Java中的RabbitMQ交换机详解,消息队列是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成,是在消息的传输过程中保存消息的容器,需要的朋友可以参考下
    2023-07-07
  • Java 8中map()和flatMap()方法区别详解

    Java 8中map()和flatMap()方法区别详解

    这篇文章主要为大家介绍了Java 8中map()和flatMap()方法区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java实现手写自旋锁的示例代码

    Java实现手写自旋锁的示例代码

    自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。本文将用Java实现手写自旋锁,需要的可以参考一下
    2022-08-08
  • 使用Feign传递请求头信息(Finchley版本)

    使用Feign传递请求头信息(Finchley版本)

    这篇文章主要介绍了使用Feign传递请求头信息(Finchley版本),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java获取本机IP地址的方法代码示例(内网、公网)

    Java获取本机IP地址的方法代码示例(内网、公网)

    在IT领域获取本机IP地址是一项基础但重要的任务,特别是在网络编程、远程协作和设备通信中,这篇文章主要给大家介绍了关于Java获取本机IP地址的方法(内网、公网),需要的朋友可以参考下
    2024-07-07
  • Java 在PDF中绘制形状的两种方法

    Java 在PDF中绘制形状的两种方法

    这篇文章主要介绍了Java 在 PDF 中绘制形状的两种实现方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 解决Weblogic部署war找不到spring配置文件的问题

    解决Weblogic部署war找不到spring配置文件的问题

    这篇文章主要介绍了解决Weblogic部署war找不到spring配置文件的问题,具有很好的参考价值,希望对大家有所帮助。
    2021-07-07

最新评论