下面是我正在尝试的代码示例,我需要每天在3个不同的时间运行1个任务X分钟,让我们说我有12,17,20并且它应该运行120分钟它已经是12:30:00所以,如果我打开应用程序,它应该启动任务,它应该运行90分钟。
我在这里做错了什么,为了做到这一点我还需要做些什么?
// 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);
}
答案 0 :(得分:0)
这不完全是Java问题...... 您需要检查当前时间(在日历中)减去当前收到的时间是否大于0且小于2小时,如果是,则运行“2小时减去此差异”的任务,否则您所写的内容。