Java 将任务计划为每天运行3次,每次运行X分钟,如果
下面是我正在尝试的代码示例,我需要每天在3个不同时间运行1个任务X分钟,假设我有12,17,20个任务,它应该运行120分钟,现在已经是12:30:00了,所以如果我打开应用程序,它应该启动任务,并且应该运行90分钟 我在这里做错了什么?为了实现上述目标,我必须改变什么Java 将任务计划为每天运行3次,每次运行X分钟,如果,java,scheduled-tasks,Java,Scheduled Tasks,下面是我正在尝试的代码示例,我需要每天在3个不同时间运行1个任务X分钟,假设我有12,17,20个任务,它应该运行120分钟,现在已经是12:30:00了,所以如果我打开应用程序,它应该启动任务,并且应该运行90分钟 我在这里做错了什么?为了实现上述目标,我必须改变什么 这不完全是Java的问题。。。 您需要检查日历中的当前时间减去当前接收时间是否大于0且小于2小时,如果是,则运行任务2小时减去此差值,否则您会写什么。@Nishant preference,粗体问题。Java并不是我真正的海滩,
这不完全是Java的问题。。。
您需要检查日历中的当前时间减去当前接收时间是否大于0且小于2小时,如果是,则运行任务2小时减去此差值,否则您会写什么。@Nishant preference,粗体问题。Java并不是我真正的海滩,我正在尝试修改上面的内容以满足我的需要。我的意思是你错过了你想得到答案的问题。别紧张基本上运行TIMELEFT=Config.TIMELEFT-start*60*1000?我想我没有得到你存储在Config.TIMELEFT中的东西,但我的意思是这样的:timeFromStart=calendar.getTime-System.current。。。;周期=2*60*60*100;如果0
// here I receive my config with the hours I need to run my task
String[] time = Config.SCHEDULE.split(",");
int runTimeLeft = Config.TIMELEFT;
for (String hour : time)
{
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour));
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
long start = calendar.getTimeInMillis() - System.currentTimeMillis();
ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable()
{
public void run()
{
startMyTask();
}
}, start, 24 * 60 * 60 * 1000);
}