@Configuration
public class ScheduledLockConfig {
@Bean
public LockProvider lockProvider(DataSource dataSource) {
//自定义表名
return new JdbcTemplateLockProvider(dataSource,"ccsy_shedlock");
}
}
4.ShedLock定时任务
@Component
public class HourTask {
/**
* 最小锁定时间,一般设置成定时任务小一点
*/
private static final int MIN_LOCK_TIME = 1000;//单位毫秒
/**
* 最大锁定时间,一般设置成比正常执行时间长的值
*/
private static final int MAX_LOCK_TIME = 1000 * 2;//单位毫秒
@Scheduled(cron = "0/1 * * * * ? ")
@SchedulerLock(name = "测试", lockAtMostFor = MAX_LOCK_TIME, lockAtLeastFor = MIN_LOCK_TIME)
public void visitCountTaskByTwoHour() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("现在时间是" + format.format(new Date())+ Thread.currentThread().getName());
}
}
@SchedulerLock注解一共支持五个参数,分别是
name 用来标注一个定时服务的名字,被用于写入数据库作为区分不同服务的标识,如果有多个同名定时任务则同一时间点只有一个执行成功