时间:2021-05-20
大概思路:
写两个程序,一个负责重启的程序,一个是待重启的程序,在这里为了区分我们假设负责重启的那个程序叫A,待重启的程序叫B,他们都是线程,还要搭配数据库,他是两个程序的桥梁,通过设置信号量进行判断程序状态(不妨设置信号量为Flag),我是这么设置的,0:表示程序正在运行中,1:表示程序需要重启,正准备做关闭自己的操作(只针对待重启的程序B),2:表示B程序已经把自己给关闭了,需要A程序把B程序启动。
实现步骤:
A程序:写一个线程进行读信号量Flag,当Flag为2的时候就把B程序启动
B程序:写一个线程进行读信号量Flag,当Flag为1的时候就把自己给关闭(java System.exit(0);)
数据库:需要一个表存Flag的值,创建表restart,并新建一个字段Flag,int(4)noNull
实现细节:
A 程序:
package com.app;import java.io.IOException;import java.sql.ResultSet;import java.sql.SQLException;import databasetool.DBtool;public class ReStart implements Runnable { int status = 0; public void run() { DBtool con = new DBtool(); ResultSet rs = null; String select = "select * from restart"; String restar = "update restart set status = '0'";// 准备启动程序,设置Status为0,表示已启动 try { int result = con.executeUpdate(restar); System.out.println("初始化,并将status状态设置为0,表示程序正常被启动了!"); } catch (SQLException e) { e.printStackTrace(); } while (true) { while (true) { if (status == 2) {// 2:表示关闭的程序等待重启 System.out.println("status状态为2,表示需要重新启动数采程序!"); try { int result = con.executeUpdate(restar); System.out.println("程序马上就被启动,并将status状态设置为0,表示程序正常运行!"); } catch (SQLException e) { e.printStackTrace(); } String cmd = "cmd /c start E:\\Bats\\MainThread.bat";// pass try { Process ps = Runtime.getRuntime().exec(cmd); ps.waitFor(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } try { rs = con.executeQuery(select); while (rs.next()) { status = rs.getInt("status"); System.out.println("检测当前状态status:"+status); } } catch (SQLException e) { e.printStackTrace(); } try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { ReStart res = new ReStart(); res.run(); }}B程序:
数据库读取工具类:
以上这篇Java操作另一个Java程序使其重启的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、使用swing嵌套浏览器要实现的功能:通过java的swing实现在一个窗体中嵌套一个浏览器,可以在这个浏览器中将另一个项目的内容显示出来,只需要回去另一个
一个简单的Javaweb服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现;一、程序执行步骤1.创建一个S
本文实例讲述了Java接口定义与实现方法。分享给大家供大家参考,具体如下:在java中,我们可以通过继承得到另一个类中的方法,但是这个仅仅满足继承一个方法,那有
所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制。本文主要介绍关于Java里面的数组复制(拷贝)的几种方式和用法。在Java中实现数组复制分别有以下4
本文实例讲述了java使用this调用构造函数的实现方法。分享给大家供大家参考,具体如下:一点睛如果在程序中想用某一个构造函数调用另一个构造函数,也可以用thi