1. 指定间隔周期无限循环执行
Timer.schedule(TimerTask task, long delay, long period) 源码
public class Timer {
/**
* task – task to be scheduled.
* delay – delay in milliseconds before task is to be executed.
* period – time in milliseconds between successive task executions.
*/
public void schedule(TimerTask task, long delay, long period) {
if (delay < 0)
throw new IllegalArgumentException("Negative delay.");
if (period <= 0)
throw new IllegalArgumentException("Non-positive period.");
sched(task, System.currentTimeMillis()+delay, -period);
}
}
2. 例程
/**
* 按指定的间隔周期无限循环地执行某一任务
*/
@Test
public void periodSchedule() throws Exception {
log.info("开始时间:" + System.currentTimeMillis());
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
log.info("任务执行:" + System.currentTimeMillis());
}
}, 3000, 2000);
TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
}
打印结果:
15:09:52.098 [main] INFO juc.TimerDemo - 开始时间:1699168192094
15:09:55.116 [Timer-0] INFO juc.TimerDemo - 任务执行:1699168195116
15:09:57.108 [Timer-0] INFO juc.TimerDemo - 任务执行:1699168197108
15:09:59.108 [Timer-0] INFO juc.TimerDemo - 任务执行:1699168199108






网友评论