重启linux和windows的java应用程序

时间:2014-01-22 11:59:44

标签: java linux windows restart processbuilder

我有一个java应用程序,当有更新它应该重新启动。我怎么能再次自动重启java应用程序。

我尝试使用“进程”构建器重新启动。

ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File(workingDir));
builder.start();
System.exit(0);

但是当我检查运行早期进程的应用程序仍在运行时。

1 个答案:

答案 0 :(得分:2)

将您的流程重新启动逻辑放在separate thread中,并将其注册为shutdown hook

也许你可以给make这个关闭钩子线程daemon并在主线程中放一些睡眠。如果进程在给定时间内没有重新启动,则只需退出应用程序,否则应用程序将重新启动并让此(主)进程关闭。

同样,对于开始新流程,您可能需要考虑

Runtime.getRuntime().exec(yourProcess); 

对于Windows,你可以做到

Runtime.getRuntime().exec("cmd /c start yourProcess");

并且对于linux进程默认启动分离,因此仅使用Runtime.getRuntime().exec(yourProcess);执行命令就可以了。