@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允许一次,独立运行

posted @ 2024-07-31 17:04  真某人  阅读(464)  评论(0编辑  收藏  举报