Runtime.getRuntime().addShutdownHook(new Thread());程序正常或非正常时一定会执行的方法,通过这个方法可以让程序在关闭前执行相应的操作。
下面是在关闭程序前一定要执行完代码再关闭的程序。
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ShMain extends Thread {
@SuppressWarnings("static-access")
public void run(){
while (!this.isInterrupted()) {
try {
System.out.println("hello10秒前");
this.sleep(1000*10);
System.out.println("hello10秒后");
this.sleep(1000*10);
System.out.println("hello20秒后");
if (!isRun) {
Runtime.getRuntime().exit(0);
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
boolean isRun = true;
public void stopThread(){
isRun = false;
}
public static void main(String[] args) {
System.out.println("helloMain");
ShMain sh = new ShMain();
sh.start();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
try{
while(true){
line = br.readLine();//判断是否是exit
if(line.equals("exit")){
sh.stopThread(); //结束线程
break;
}
}
}catch(Exception e) {}
}
}
分享到:
相关推荐
"在程序中运行另一个EXE程序直到它运行结束"是一个常见的需求,特别是在需要集成多个功能或者进行系统级操作时。这个话题涉及到操作系统进程管理、API调用和进程间通信等多个知识点。 首先,我们要理解操作系统是...
当你调用一个子程序并等待其返回结果时,可以认为子程序执行结束。通过检查子程序的返回值或状态,可以判断其是否已执行完毕。 3. **事件驱动**:易语言支持事件驱动编程,即程序响应外部事件而执行特定代码。在...
当窗口存在时,循环会持续进行,直到程序关闭,窗口句柄变为0,循环才会结束。 注意,这种方法依赖于程序有一个可见的窗口。如果被启动的程序是无界面的后台进程,那么你可能需要使用其他方法,如`GetProcessById`...
1. 代码错误:可能是语法错误或逻辑错误,导致程序执行到非法指令。 2. 逻辑错误:程序设计的逻辑存在缺陷,导致在特定条件下的异常行为。 3. 内存溢出:程序对内存分配和释放管理不当,导致访问了未分配或已释放的...
这个压缩包文件"运行外部程序并等待其结束(Run方法).xlsm"包含了一个具体的实例,展示了如何通过VBA来运行外部程序,并且确保程序执行完毕后再继续执行VBA脚本的其余部分。 首先,我们需要了解`Run`方法的基本语法...
标题中的“在程序中运行另一个EXE程序直到它运行结束(1KB)”指的是在编程时如何启动并等待一个外部可执行文件(EXE)完成其执行过程。这通常涉及到进程管理和控制,是系统编程和软件工程中常见的需求。在Windows操作...
如果获取成功,说明当前没有其他实例在运行,可以继续执行程序;如果获取失败,通常是因为另一个实例已经持有互斥体,这时就需要退出程序,防止多个实例同时运行。 3. **释放互斥体**:当程序结束时,要记得释放...
【Python表白程序】是一种趣味性的编程实践,它利用Python语言编写,目的是向某人表达情感,通常在程序运行后,用户需要输入特定的回应才能关闭程序。这种类型的程序常常包含循环结构、条件判断以及用户交互功能,...
例如,一个运行的实例可以监听特定的消息,当新实例启动并发送该消息时,旧实例接收并关闭自己,允许新实例继续运行。 6. **源码结构**:源码可能包含以下部分: - 主函数:负责初始化和检查是否已有运行实例。 -...
// 没有其他实例在运行,继续执行程序 } ``` 2. **命名管道(Named Pipe)** 命名管道是一种可以在不同进程之间进行通信的方式。程序启动时,可以尝试创建一个已命名的管道。如果创建失败,通常意味着已有相同...
"VC实现只有一个程序运行的功能"这个标题所描述的,就是利用C++编程语言在Visual C++环境下,通过Windows API中的互斥对象(Mutex)来实现这一功能。下面我们将详细探讨如何实现这一机制。 首先,互斥对象是Windows...
标题中的"Windows7&windows XP程序运行补丁"指的是专门为在Windows 7和Windows XP操作系统上运行的C#程序设计的一组修复更新。这些补丁的目的是解决程序在执行过程中可能出现的错误、崩溃或无响应问题,确保程序能够...
4. **定时功能**:要实现定时关闭,VBS脚本可能使用`WScript.Sleep`函数来设置延迟时间,然后在此之后调用`Run`方法执行关闭程序的命令。例如,如果希望在5分钟后关闭程序,可以在脚本中设置一个5分钟的延迟。 5. *...
在本教程中,我们将深入探讨如何利用三菱FX系列PLC实现时间锁机功能以及计数限制PLC程序运行的停机控制。 1. **三菱FX系列PLC**:这是三菱电机推出的一系列小型可编程逻辑控制器,广泛应用于各种自动化设备中。FX...
这种机制在确保单例模式执行、防止程序多实例运行等方面非常有用。 在"API创建互斥体禁止程序重复运行.rar"这个压缩包中,我们可以推断出它包含了一个使用易语言编写的示例,该示例演示如何通过API调用来创建互斥体...
在Windows CE(简称WinCE)操作系统中,与桌面版Windows不同,它被设计为一次只能运行一个应用程序。这种设计源于其资源有限的嵌入式环境,以优化性能和内存使用。在开发针对WinCE的应用程序时,特别是使用C#语言时...
本程序是比较完善的改进,利用多线程弹出等待窗口,并根据后台程序的运行需要实时发出运行状态信息到等待窗口中,当后台程序运行结束时给弹出窗口线程发出结束信号,让线程自行终止。程序运行环境 vs.net 2010
综上所述,"易语言禁止多次运行"的实现涉及到了程序运行状态的检测(通过运行标志或互斥体)以及对这些状态的有效管理(创建、打开、关闭)。通过这种方式,开发者可以确保同一台计算机上不会同时运行多个程序实例,...
这个程序包含了服务器端(SERVER)和客户端(CLIENT)的代码,以及运行结果的截图,让我们逐一深入了解这些内容。 首先,JAVA聊天程序的核心在于网络通信,这通常涉及到Java的Socket编程。Socket是TCP/IP协议族的一...