@DisallowConcurrentExecution
@DisallowConcurrentExecution
这个注解的作用是防止同一个 JobDetail 的多个实例同时执行。如果一个任务还在执行中,而调度器尝试再次触发该任务,则新的触发会被阻塞,直到当前任务执行完成。也就是说,同一个任务在任意时间点上只能有一个实例在执行。
使用场景:
当你的任务不是线程安全的,或者任务的执行需要严格的顺序时,可以使用这个注解。例如,任务执行过程中需要访问某些共享资源,而这些资源的访问不能并发进行时,就可以用这个注解来防止并发执行。
使用若依为例:
1,并发:是(使用@DisallowConcurrentExecution)
2,cron: 0/10 * * * * ?
3,执行代码
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { try {TimeUnit.SECONDS.sleep(12); } catch (InterruptedException e) {throw new RuntimeException(e);} System.out.println(StringUtils.format(DateUtils.getTime()+" 执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); }
4,控制台打印
2024-07-31 16:46:02 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:46:12 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:46:22 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:46:32 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:46:42 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:46:52 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:47:02 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:47:12 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
2024-07-31 16:47:22 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
5,结论:每隔10s允许一次,并发操作
6,并发:否
7,控制台打印
2024-07-31 16:48:34 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100 2024-07-31 16:48:46 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100 2024-07-31 16:48:58 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100 2024-07-31 16:49:10 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100 2024-07-31 16:49:22 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100 2024-07-31 16:49:52 执行多参方法: 字符串类型ry,布尔类型true,长整型2000,浮点型316.5,整形100
8,结论:每隔12s允许一次,独立运行