Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Java程序在几秒钟后退出_Java_System_Exit_Seconds - Fatal编程技术网

如何让Java程序在几秒钟后退出

如何让Java程序在几秒钟后退出,java,system,exit,seconds,Java,System,Exit,Seconds,我是否可以在几秒钟后退出java程序,例如5秒钟 我知道您可以使用以下方法退出java程序: System.exit(0); 但我不确定0是否代表秒,因为以下代码: System.exit(10); 也会立即退出您可以在退出程序之前调用Thread.sleep(): // Your code goes here. try { Thread.sleep(5000); } catch (InterruptedException e) { // log the exceptio

我是否可以在几秒钟后退出java程序,例如5秒钟

我知道您可以使用以下方法退出java程序:

System.exit(0);
但我不确定0是否代表秒,因为以下代码:

System.exit(10);

也会立即退出

您可以在退出程序之前调用
Thread.sleep()

// Your code goes here.

try 
{
   Thread.sleep(5000);
} 
catch (InterruptedException e) 
{
   // log the exception.
}

System.exit(0);

您传递到系统中的0。退出(0)与退出前等待的时间无关。从javadoc:

参数用作状态代码;按照惯例,非零状态 代码表示异常终止

其他答案已经涵盖了如果确实需要退出,如何在退出前等待5秒钟。

方法文档:

终止当前运行的Java虚拟机。争论 用作状态代码;按照惯例,非零状态代码 表示异常终止

如果您需要在等待退出期间执行某些操作,您可以创建一个控制线程,该线程只需等待正确的时间执行退出,如下所示:

public class ExitFewMiliseconds {

    public static void main(String args[]) {

        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.exit(0);
            }
        }).start();

        while (true) {
            System.out.println("I'm doing something");
        }
    }

}
如果在等待退出时没有执行任何操作,您可以简单地使用系统。退出(0)指定程序的退出错误代码

你可以把它放在计时器上并安排任务

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimedExit {
Timer timer = new Timer();
TimerTask exitApp = new TimerTask() {
public void run() {
    System.exit(0);
    }
};

public TimedExit() {
timer.schedule(exitApp, new Date(System.currentTimeMillis()+5*1000));
    }

}
然后你可以直接调用TimedExit()


通过这种方式,您可以使用Timer类并在特定时间间隔后退出系统

这很有趣,但您究竟为什么要退出正在运行的VM?0
并不代表秒
。在System.exit(X)中,X是程序的退出代码(它将向调用shell报告),它与时间无关。@Eugene我正在尝试创建一个游戏,在这个游戏中你必须快速回答数学问题。如果进行安全检查,这可能会失败enabled@Eugene是的,有可能。您能为这种情况提供一个解决方案吗?谢谢,我使用了这个想法,并将其更新为Java8方式。现在它是一行程序:Executors.newSingleThreadScheduledExecutor().schedule(()->System.exit(0),60,TimeUnit.SECONDS);
import java.util.Timer;
import java.util.TimerTask;

/**
 * Simple demo that uses java.util.Timer to schedule a task 
 * to execute once 5 seconds have passed.
 */
class Reminder {

    Timer timer;

    public Reminder(int seconds) {
        timer = new Timer();
        timer.schedule(new RemindTask(), seconds * 1000);
    }

    class RemindTask extends TimerTask {
        public void run() {
            System.out.format("Time's up!%n");
            System.exit();
            timer.cancel(); //Terminate the timer thread
        }
    }

    public static void main(String args[]) {
        new Reminder(10);
        System.out.format("Task scheduled.%n");
    }
}