如何更频繁地安排执行某些事情然后按分钟计划?

时间:2012-08-31 19:38:42

标签: java scheduled-tasks cron4j

目前,使用cron4j,我可以在13:01安排执行事件。虽然很好,但根据我的理解,它不允许人们在13:01:10(10秒后)安排活动。

是否有一种工具可以在调度中实现这样的粒度?

4 个答案:

答案 0 :(得分:1)

如果您正在寻找图书馆,则应该查看Quartz。这是一个非常灵活的调度程序。

答案 1 :(得分:1)

在Java中,您可以使用Timer和Timer任务类来安排任务,例如演示

import java.util.Timer;
import java.util.TimerTask;
public class MyTask extends TimerTask{
    Timer timer;
    int count=0;
    public MyTask(){        
    }
    public MyTask(Timer timer){
        this.timer=timer;
    }
    public void toDo(){
        System.out.println("count-> "+(count++));        
    }
    @Override
    public void run() {
        toDo();
        if(count>10){//this is the condition when you want to stop the task.
            timer.cancel();
        }
    }
}

对于此计时器,您可以按如下方式运行

public static void main(String[] args){
     Timer timer=new Timer();
     MyTask myTask=new MyTask(timer);
     int firstSart=1000;// it means after 1 second.
     int period=1000*2;//after which the task repeat;
     timer.schedule(myTask,firstSart,period);//the time specified in millisecond.     
 }

答案 2 :(得分:0)

Timer班怎么样?它允许以固定的间隔安排执行,精确到毫秒。

答案 3 :(得分:-1)

亲自发现quartz是一个非常复杂和强大的调度程序,因此快速入门并不容易。它可能不是一个有效的解决方案,但您可以在执行每分钟安排的任务之前sleep(long)

public void execute(TaskExecutionContext context){
    sleep(TimeUnit.SECONDS.toMilliseconds(10));
}

我没有检查上一代码的语法,因此您可能需要对其进行验证。