在特定时间安排顶级/终止Java程序

时间:2017-04-28 13:28:19

标签: java timer

有没有办法安排在特定时间停止或终止java程序。我正在使用 java.util.timer 。例如晚上10点。我知道如何在特定时间安排启动java程序。问题是我无法找到终止程序的方法。

5 个答案:

答案 0 :(得分:1)

你可以创建一个后台线程(为了不阻止UI),你可以在里面查看当前的小时/分钟/天

GregorianCalendar calendar = new GregorianCalendar (); // creates a new calendar instance 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!
Thread.sleep(60000)                 //sleep 60seconds

if(<rightTime>)
    System.exit(0);

另见https://stackoverflow.com/a/907207/6726261

答案 1 :(得分:1)

你可以使用TimerTask来做到这一点,这是一个例子:

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

public class StopApp {
Timer timer = new Timer();
TimerTask StopApp = new TimerTask() {
    @Override
    public void run() {
        System.exit(0);
    }
};
public StopApp() {

//timer.schedule(exitApp, getDateDiff(new Date("get the actual time"), new Date("get the time you want to stop your app"), TimeUnit.SECONDS));
    //Example
    timer.schedule(StopApp, new Date(System.currentTimeMillis()+2*1000));//Exits after 2 sec of starting the app

while(true)

    System.out.println("The App still turn");
}

public static Date getDateDiff(Date date1, Date date2, TimeUnit timeUnit) {
    long diffInMillies = date2.getTime() - date1.getTime();
    Date date=new Date(diffInMillies);

    return date;//timeUnit.convert(diffInMillies,TimeUnit.MILLISECONDS);
}

public static void main(String[] args) {

    new StopApp();

}
}

答案 2 :(得分:0)

检查此文档:https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#exit(int)System.exit(0);可以做你想做的事。

答案 3 :(得分:0)

停止使用您的程序:System.exit(0); 更多信息here

答案 4 :(得分:0)

您可以使用procrun,它将创建一个运行您的Java应用程序的服务。然后,您可以安排服务的开始和停止。

您应该阅读解释如何配置服务的docs of procrun

更简单的方法是运行创建服务的prunsrv //IS//my_service_name,然后执行prunmngr //ES//my_service_name,这将打开一个服务配置对话框,您可以在其中设置所有服务参数。

您的应用程序需要一个公共静态方法来调用procrun将用来停止您的应用程序。

另一种选择是从流中读取并等待一些输入,当读取输入时,您停止应用程序。

此流可以是套接字或文件,然后当您想要停止应用时,只需安排另一个应用程序在该流上写入。