有没有办法安排在特定时间停止或终止java程序。我正在使用 java.util.timer 。例如晚上10点。我知道如何在特定时间安排启动java程序。问题是我无法找到终止程序的方法。
答案 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);
答案 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将用来停止您的应用程序。
另一种选择是从流中读取并等待一些输入,当读取输入时,您停止应用程序。
此流可以是套接字或文件,然后当您想要停止应用时,只需安排另一个应用程序在该流上写入。