当前位置: 代码网 > it编程>编程语言>Java > SpringBoot使用shedlock做定时任务的实现示例

SpringBoot使用shedlock做定时任务的实现示例

2025年07月24日 Java 我要评论
1、pom依赖<dependency> <groupid>net.javacrumbs.shedlock</groupid> <artifactid>

1、pom依赖

<dependency>
  <groupid>net.javacrumbs.shedlock</groupid>
  <artifactid>shedlock-spring</artifactid>
  <version>4.15.1</version>
</dependency>
<dependency>
  <groupid>net.javacrumbs.shedlock</groupid>
  <artifactid>shedlock-provider-redis-spring</artifactid>
  <version>4.15.1</version>
</dependency>

2、shedlock使用redis锁

解决多实例下任务重复执行问题。

@configuration
public class schedulelockconfig {
  @bean
  public lockprovider lockprovider(redisconnectionfactory redisconnectionfactory) {
    return new redislockprovider(redisconnectionfactory);
  }
}

3、配置定时任务线程池

解决多任务并发执行时等待问题。

@configuration
public class scheduleconfig implements schedulingconfigurer {
  @override
  public void configuretasks(scheduledtaskregistrar taskregistrar) {
    threadpooltaskscheduler taskscheduler = new threadpooltaskscheduler();
    taskscheduler.setpoolsize(10);
    taskscheduler.setthreadnameprefix("taskscheduler-");
    taskregistrar.setscheduler(taskscheduler);
  }
}

4、定时任务代码

@configuration
public class scheduletask {
  /**
   * concurrent task 1.
   */
  @scheduled(cron = "0/5 * * * * ?")
  @schedulerlock(name = "synctask1")
  public void synctask1() throws interruptedexception {
    system.err.println("并发执行任务1: " + localdatetime.now());
    thread.sleep(7000);
  }

  /**
   * concurrent task 2.
   */
  @scheduled(cron = "0/5 * * * * ?")
  @schedulerlock(name = "synctask2")
  public void synctask2() {
    system.err.println("并发执行任务2: " + localdatetime.now());
  }
}

到此这篇关于springboot使用shedlock做定时任务的实现示例的文章就介绍到这了,更多相关springboot shedlock定时任务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com