java程序自动重启_java程序自动重启

java写的cs程序,要求设置一个时间,让程序自动重启。

思路,java代码写一个定时器,每隔一秒判断是否重启,若符合条件,则创建一个新的线程,线程调用一个重启的批处理,重启批处理先停止5分钟,接着在启动java程序。

目录结构如下:

48a46af99271037770b39c55bcd74e7f.png

启动批处理:

run.bat

内容:

java -jar barcode.jar

重启批处理,300秒,相当于6分钟:

restart.bat

内容:

ping -n 300 127.0.0.1>nul

java -jar barcode.jar

exit

配置文件config.xml,配置一个节点:

16:00:00

java代码,以下定时器为简单写法,优化事情请自行解决:

/**

* 重启软件

* @param date

*/

private void restartApp()

{

//创建一个定时器

new Thread(new Runnable(){

public void run() {

String nowDate = null;

String date = getConfigInfo().getRestartTime();

while(true)

{

try {

Thread.sleep(1000);

//当前时间格式HH:mm:ss

nowDate = DateTimeHelper.format(new Date(), "HH:mm:ss");

if(nowDate.equals(date))//对比成功

{

new Thread(

new Runnable(){

public void run() {

//调用重启批处理

String str = UtilityHelper.runConsoleCommand("cmd.exe /c start restart.bat");

System.out.println(str);

}

}

).start();

//休眠3秒

Thread.sleep(3*1000);

//跳出where

break;

}

} catch (Exception ex) {

logger.error(ex.getMessage());

}

}

//结束其它线程

//......

//结束程序

System.exit(0);

}

}).start();

}

UtilityHelper类:

import java.io.BufferedInputStream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.UnsupportedEncodingException;

import java.net.InetAddress;

import java.net.URLDecoder;

import java.net.UnknownHostException;

import java.util.UUID;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class UtilityHelper {

private static Logger logger = LoggerFactory.getLogger(UtilityHelper.class);

/**

* 执行本地命令

*

* @param command

*            命令

* @return

*/

public static String runConsoleCommand(String command) {

StringBuffer buffer = new StringBuffer();

InputStream inputStream = null;

Process p = null;

try {

p = Runtime.getRuntime().exec(command);

inputStream = new BufferedInputStream(p.getInputStream());

while (true) {

int c = inputStream.read();

if (c == -1) {

break;

}

buffer.append((char) c);

}

} catch (IOException ex) {

//   ex.printStackTrace();

} finally {

if (inputStream != null) {

try {

inputStream.close();

} catch (IOException e) {

//     e.printStackTrace();

}

}

if (p != null) {

p.destroy();

p = null;

}

}

return buffer.toString();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值