Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将任务计划为每天运行3次,每次运行X分钟,如果_Java_Scheduled Tasks - Fatal编程技术网

Java 将任务计划为每天运行3次,每次运行X分钟,如果

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并不是我真正的海滩,

下面是我正在尝试的代码示例,我需要每天在3个不同时间运行1个任务X分钟,假设我有12,17,20个任务,它应该运行120分钟,现在已经是12:30:00了,所以如果我打开应用程序,它应该启动任务,并且应该运行90分钟

我在这里做错了什么?为了实现上述目标,我必须改变什么


这不完全是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); }