使用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 ?" = 每年圣诞节晚上
时间: 2024-11-05 11:02:19