3

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

有没有一种工具可以在调度中实现这种粒度?

4

4 回答 4

1

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

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.     
 }
于 2013-01-27T16:26:20.127 回答
1

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

于 2012-08-31T19:43:12.530 回答
0

Timer类呢?它允许以精确到毫秒的定期间隔安排执行。

于 2012-08-31T19:42:33.440 回答
-1

个人觉得石英是一个非常复杂和强大的调度器,所以快速上手并不容易。它可能不是一个有效的解决方案,但您可以sleep(long)在执行每分钟安排的任务之前。

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

我没有检查前面代码的语法,所以您可能需要验证它。

于 2013-01-27T16:12:42.250 回答