在特定时间安排顶部/终止 Java 程序
Posted
技术标签:
【中文标题】在特定时间安排顶部/终止 Java 程序【英文标题】:Schedule top / terminate a Java program on a specific time 【发布时间】:2017-04-28 13:28:18 【问题描述】:有没有办法安排在特定时间停止或终止java程序。我正在使用 java.util.timer。例如晚上 10 点。我知道如何安排在特定时间启动 java 程序。问题是我无法找到终止程序的方法。
【问题讨论】:
System.exit(1) 停止一个 java 程序。但我不知道这是否是最好的方法...... "我知道如何安排在特定时间启动 java 程序" 使用相同的方法在所需时间安排kill -SIGTERM
怎么样?
我想知道如何安排那个..for ex stop at 10pm..我的错误我没有在问题中提到它。我更新了我的问题。对不起
您想停止“远程”Java 应用程序,而不是您的应用程序?
今日日历 = Calendar.getInstance(); today.set(Calendar.HOUR_OF_DAY, 18);// 设置为 18,即 24 小时后的下午 6:00 today.set(Calendar.MINUTE, 00); today.set(Calendar.SECOND, 0); // 每天凌晨 2 点运行任务 Timer timer = new Timer(); timer.schedule( , today.getTime());类 CloseApp 实现 Runnable public void run() System.exit(0);
【参考方案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】:你可以创建一个后台线程(为了不阻塞用户界面),你可以在里面检查当前的小时/分钟/天
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://***.com/a/907207/6726261
【讨论】:
【参考方案3】:查看此文档:https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#exit(int)。
System.exit(0);
可以为所欲为。
【讨论】:
我想知道如何安排那个..for ex stop at 10pm..我的错误我没有在问题中提到它。我更新了我的问题。对不起 D.Madu 说他正在使用 java.util.timer 所以我认为他已经知道如何安排任务(在这种情况下为 Sytem.exit(0))。 D.Madu 检查 nate_weldon 对此问题的回答:***.com/questions/15747277/…。它可能会帮助你。【参考方案4】:停止你的程序使用:System.exit(0);
更多信息here
【讨论】:
您错过了问题的在特定时间部分 @AxelHI know how to schedule start a java program on a specific time. Problem is I cannot figure out a way to terminate a program.
我想知道如何安排..因为晚上 10 点前停止.. 糟糕的是我没有在问题中提到它。我更新了我的问题。对不起【参考方案5】:
您可以使用procrun,它将创建一个运行您的Java 应用程序的服务。然后您可以安排服务的启动和停止。
您应该阅读docs of procrun,其中解释了如何配置您的服务。
更简单的方法是运行创建服务的prunsrv //IS//my_service_name
,然后执行prunmngr //ES//my_service_name
,这将打开一个服务配置对话框,您可以在其中设置所有服务参数。
您的应用程序将需要一个公共静态方法来调用,procrun 将使用该方法来停止您的应用程序。
另一种选择是从流中读取并等待一些输入,当读取输入时,您会停止应用程序。
这个流可以是一个套接字或一个文件,然后当你想停止你的应用程序时,你只需安排另一个应用程序在那个流上写入。
【讨论】:
以上是关于在特定时间安排顶部/终止 Java 程序的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 Javascript/VuejS/Nodejs 包将特定的 JSON 键移动到 JSON 的顶部?