`
klts
  • 浏览: 41358 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

关闭程序执行直到程序运行完

 
阅读更多

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程序直到它运行结束(1KB)...

    "在程序中运行另一个EXE程序直到它运行结束"是一个常见的需求,特别是在需要集成多个功能或者进行系统级操作时。这个话题涉及到操作系统进程管理、API调用和进程间通信等多个知识点。 首先,我们要理解操作系统是...

    易语言判断程序段是否运行结束

    当你调用一个子程序并等待其返回结果时,可以认为子程序执行结束。通过检查子程序的返回值或状态,可以判断其是否已执行完毕。 3. **事件驱动**:易语言支持事件驱动编程,即程序响应外部事件而执行特定代码。在...

    VB Shell调用后等待程序运行结束

    当窗口存在时,循环会持续进行,直到程序关闭,窗口句柄变为0,循环才会结束。 注意,这种方法依赖于程序有一个可见的窗口。如果被启动的程序是无界面的后台进程,那么你可能需要使用其他方法,如`GetProcessById`...

    快速解决程序运行中突然异常的问题,并找到根源

    1. 代码错误:可能是语法错误或逻辑错误,导致程序执行到非法指令。 2. 逻辑错误:程序设计的逻辑存在缺陷,导致在特定条件下的异常行为。 3. 内存溢出:程序对内存分配和释放管理不当,导致访问了未分配或已释放的...

    Excel-VBA宏编程实例源代码-运行外部程序并等待其结束(Run方法).zip

    这个压缩包文件"运行外部程序并等待其结束(Run方法).xlsm"包含了一个具体的实例,展示了如何通过VBA来运行外部程序,并且确保程序执行完毕后再继续执行VBA脚本的其余部分。 首先,我们需要了解`Run`方法的基本语法...

    在程序中运行另一个EXE程序直到它运行结束(1KB)

    标题中的“在程序中运行另一个EXE程序直到它运行结束(1KB)”指的是在编程时如何启动并等待一个外部可执行文件(EXE)完成其执行过程。这通常涉及到进程管理和控制,是系统编程和软件工程中常见的需求。在Windows操作...

    易语言利用互斥体禁止程序重复运行

    如果获取成功,说明当前没有其他实例在运行,可以继续执行程序;如果获取失败,通常是因为另一个实例已经持有互斥体,这时就需要退出程序,防止多个实例同时运行。 3. **释放互斥体**:当程序结束时,要记得释放...

    python表白程序,只有同意才能关闭的程序

    【Python表白程序】是一种趣味性的编程实践,它利用Python语言编写,目的是向某人表达情感,通常在程序运行后,用户需要输入特定的回应才能关闭程序。这种类型的程序常常包含循环结构、条件判断以及用户交互功能,...

    易语言源码防止程序同时运行简单易语言源码.7z

    例如,一个运行的实例可以监听特定的消息,当新实例启动并发送该消息时,旧实例接收并关闭自己,允许新实例继续运行。 6. **源码结构**:源码可能包含以下部分: - 主函数:负责初始化和检查是否已有运行实例。 -...

    如何实现程序互斥运行

    // 没有其他实例在运行,继续执行程序 } ``` 2. **命名管道(Named Pipe)** 命名管道是一种可以在不同进程之间进行通信的方式。程序启动时,可以尝试创建一个已命名的管道。如果创建失败,通常意味着已有相同...

    VC实现只有一个程序运行的功能。

    "VC实现只有一个程序运行的功能"这个标题所描述的,就是利用C++编程语言在Visual C++环境下,通过Windows API中的互斥对象(Mutex)来实现这一功能。下面我们将详细探讨如何实现这一机制。 首先,互斥对象是Windows...

    Windows7&windows XP程序运行补丁

    标题中的"Windows7&windows XP程序运行补丁"指的是专门为在Windows 7和Windows XP操作系统上运行的C#程序设计的一组修复更新。这些补丁的目的是解决程序在执行过程中可能出现的错误、崩溃或无响应问题,确保程序能够...

    xp关闭系统VBS小程序

    4. **定时功能**:要实现定时关闭,VBS脚本可能使用`WScript.Sleep`函数来设置延迟时间,然后在此之后调用`Run`方法执行关闭程序的命令。例如,如果希望在5分钟后关闭程序,可以在脚本中设置一个5分钟的延迟。 5. *...

    三菱FX系列PLC 时间锁机程序教程 和记数限制PLC程序运行 停机控制教程视频.zip

    在本教程中,我们将深入探讨如何利用三菱FX系列PLC实现时间锁机功能以及计数限制PLC程序运行的停机控制。 1. **三菱FX系列PLC**:这是三菱电机推出的一系列小型可编程逻辑控制器,广泛应用于各种自动化设备中。FX...

    API创建互斥体禁止程序重复运行.rar

    这种机制在确保单例模式执行、防止程序多实例运行等方面非常有用。 在"API创建互斥体禁止程序重复运行.rar"这个压缩包中,我们可以推断出它包含了一个使用易语言编写的示例,该示例演示如何通过API调用来创建互斥体...

    WinCE 只允许运行一个程序例子 C#

    在Windows CE(简称WinCE)操作系统中,与桌面版Windows不同,它被设计为一次只能运行一个应用程序。这种设计源于其资源有限的嵌入式环境,以优化性能和内存使用。在开发针对WinCE的应用程序时,特别是使用C#语言时...

    c# Winform 弹出式等待窗口,多线程

    本程序是比较完善的改进,利用多线程弹出等待窗口,并根据后台程序的运行需要实时发出运行状态信息到等待窗口中,当后台程序运行结束时给弹出窗口线程发出结束信号,让线程自行终止。程序运行环境 vs.net 2010

    易语言禁止多次运行

    综上所述,"易语言禁止多次运行"的实现涉及到了程序运行状态的检测(通过运行标志或互斥体)以及对这些状态的有效管理(创建、打开、关闭)。通过这种方式,开发者可以确保同一台计算机上不会同时运行多个程序实例,...

    JAVA聊天程序代码和运行结果

    这个程序包含了服务器端(SERVER)和客户端(CLIENT)的代码,以及运行结果的截图,让我们逐一深入了解这些内容。 首先,JAVA聊天程序的核心在于网络通信,这通常涉及到Java的Socket编程。Socket是TCP/IP协议族的一...

Global site tag (gtag.js) - Google Analytics