使用spring框架,需要定时任务只需要在方法上加@Component 就可以了

package hello;

import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; @Component
public class ScheduledTasks { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("The time is now " + dateFormat.format(new Date()));
}
}

@Component 如果规则比较使用fixedDelay和initialDelay就行了

fixedDelay是每隔多少执行一次。initialDelay是启动后多久第一次执行。单位都是毫秒。前面的例子是5秒钟一次

如果需要的规则比较复杂,就需要用cron表达式了。

@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
// something that should execute on weekdays only
}

这个表达式包含6个顺序独立的字段: 分别表示 秒, 分钟, 小时, 日(几号), 月, 星期几. 月和星期几可以用英文名的前三个字母表示。

上面的例子是工作日每5秒执行一次

再给几个例子

"0 0 * * * *" = 每天每个小时开始.
"*/10 * * * * *" = 每隔10分钟.
"0 0 8-10 * * *" = 每天的8, 9和10点.
"0 0/30 8-10 * * *" = 每天8:00, 8:30, 9:00, 9:30 和 10:00
"0 0 9-17 * * MON-FRI" = 工作日的朝九晚五
"0 0 0 25 12 ?" = 每年圣诞节晚上
05-08 08:08