• 首页
  • 栏目
  • CRM
  • 【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:八、job并发及持久化】:图灵...

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:八、job并发及持久化】:图灵...

  • 2021-11-30
  • Admin

八、job并发及持久化

Job中需要掌握的两个注解:

  • @DisallowConcurrentExecution
  • @PersistJobDataAfterExecution

场景一、有些场景需要这种规避并发访问的问题。

  • job中给了1秒的间隔时间,每过一秒执行一次任务,每次任务的jobDetail实例是不一样的
  • 虽然每次的任务内容没有发生变化,但是实例却不一样了。

【验证】:每次任务的jobDetail实例是不一样的
在这里插入图片描述
在这里插入图片描述

场景二、不想要多线程执行:因为上一个任务还没有执行完,定时1秒后,不管设不设置sleep都执行下一个任务了。

  • 我们希望上一个任务没有执行完的时候,后一个任务不让他立即执行。

这时候我们就可以使用:@DisallowConcurrentExecution
在这里插入图片描述

  • 不是同一个实例,不过是同一个job定义。
    代码演示:
    在这里插入图片描述
    加了这个注解之后,就可以变成并发的访问方式,变成MyJob.java中设置的3秒一次

场景三、每一次的JobDataMap实例也是不一样的,此时不希望每次都变。

【演示】:不加注解后每次JobDataMap实例不一样

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这时候就可以使用:@PersistJobDataAfterExecution注解

  • 持久化JobDetail中的JobDataMap【对trigger中的datamap无效】
    在这里插入图片描述

代码演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原文:https://blog.csdn.net/qq_40572023/article/details/121628834

联系站长

QQ:769220720