springboot定时器@Scheduled的cron,fixedRate,fixedDelay使用

1:注意:使用cron在线生成器调试https://cron.qqe2.com/,看调试结果是否符合自己的要求

1、实现类上要有组件的注解@Component @Service(@Component相当于一个bean);
2、spring的@Scheduled注解 需要写在实现方法上,如:@Scheduled("cron = “0 0 0 * * ?”) (表示每天0点的定时任务);
3、定时器的任务实现方法内不能有返回值。
三、示例
0 * * * * ? 每1分钟触发一次
0 0 * * * ? 每天每1小时触发一次
0 0 10 * * ? 每天10点触发一次
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 30 9 1 * ? 每月1号上午9点半
0 15 10 15 * ? 每月15日上午10:15触发
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0 0 1 * ? 每月1号凌晨执行一次

/**
 * @Author xu
 * @create 2022/11/16
 */
@Service
@EnableScheduling
public class VibratorTableTask {
    @Autowired
    VibratorMapper vibratorMapper;

    /**
     * 定时生成震动器数据表,根据时间分表
     */

	//定时器每10分钟执行一次
    @Scheduled(cron = "0 */10 * * * * ")
    //定时器每1小时执行一次
//    @Scheduled(cron = "0 0 */1 * * * ")
//	单位是微妙
//	@Scheduled(fixedRate=1000)
//	@Scheduled(fixedDelay=1000)
    public void createTable() {
        //TODO   someting

    }
}

介绍及区别说明:
FixedRate----- > @Scheduled(fixedRate=5000)
第一个任务开始时间秒数为00:00:10;那么在5秒之后,15秒的时候,第二个任务就会立刻执行的。 若第一个任务执行划分10秒,第> > 二个任务的执行并不会受影响,还是会在00:00:15秒的时候执行。
FixedDelay---- > @Scheduled(fixedDelay=5000)
第一个任务开始时间秒数为00:00:10;那么第二个任务执行的时候,必须是第一个任务执行完再等5秒之后才能执行。 若第一个任务执行花费10秒,那么就说00:00:10++10+5秒,也就是00:00:25秒的时候,第二个任务才会执行。

你可能感兴趣的:(spring,boot,java,后端)