我是否可以在几秒钟后退出java程序,例如5秒钟。
我知道你可以退出java程序使用:
System.exit(0);
但我不确定0是否代表秒,因为这个代码:
System.exit(10);
也立即退出
System.exit(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((
您可以在退出程序之前调用Thread.sleep()
:
// Your code goes here.
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// log the exception.
}
System.exit(0);
From System.exit(int(方法文档:
终止当前正在运行的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");
}
}
}
如果在等待退出时没有执行任何操作,您可以简单地使用Thread.sleep(ms(
传递到System.exit(0(的0与退出前等待的时间无关。Javadocs是你的朋友。来自javadoc:
该参数用作状态代码;按照惯例,非零状态代码表示异常终止。
其他答案已经涵盖了如果你真的需要,如何在退出前等待5秒。
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");
}
}
通过这种方式,您可以使用Timer类并在特定的时间间隔后退出系统