安排任务每天运行3次X分钟以及是否

时间:2011-02-20 19:16:20

标签: java scheduled-tasks

下面是我正在尝试的代码示例,我需要每天在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);
    }

1 个答案:

答案 0 :(得分:0)

这不完全是Java问题...... 您需要检查当前时间(在日历中)减去当前收到的时间是否大于0且小于2小时,如果是,则运行“2小时减去此差异”的任务,否则您所写的内容。