spring 定时任务,解决定时任务阻塞

 /*
    * 定时任务
    * 默认定时任务会阻塞
    *  (1)为了防止这个事情应该使用 异步任务
    *     CompletableFuture.runAsync(()->{
    *            task();
    *   },executor);
    *
    *   (2)定时任务线程池 : spring.task.scheduling.pool.size= 10 [不太好用]
    *                   自动配置类 TaskSchedulingAutoConfiguration  属性绑定在: TaskExecutionProperties
    *  异步任务:
    *     自动配置类: TaskExecutionAutoConfiguration 默认也会给容器添加线程池
    *     (1) @EnableAsync: 开启异步任务的注解
    *    (2) @Async: 标在方法上面 , 让方法异步执行
    *
    *  解决异步+加定时任务 解决定时任务阻塞问题
    *
    * */
  /*  @Async
    @Scheduled(cron = "* * * * * 6")
    public void hello() throws InterruptedException {
        log.info("hello");
      Thread.sleep(3000);

    }*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于Spring定时任务不执行的问题,通常有几个常见的原因。 首先,请确保你已经正确地配置了Spring定时任务。在Spring中,你可以使用`@EnableScheduling`注解启用定时任务,并在需要执行定时任务的方法上添加`@Scheduled`注解来指定执行的时间表达式。同时,确保你的定时任务方法是公共的,并且没有任何参数。 如果你已经正确配置了定时任务,但任务仍然没有执行,那可能是以下几个原因之一: 1. 定时任务被其他线程阻塞:检查你的定时任务方法是否存在长时间运行的操作,这可能会阻塞任务的执行。如果是这种情况,你可以考虑将长时间运行的操作放到异步方法中执行,或者使用线程池来管理任务。 2. 定时任务表达式错误:请确保你的定时任务表达式是正确的。你可以使用Cron表达式来指定定时任务的执行时间。检查表达式中的秒、分、时、日等字段是否设置正确。 3. 定时任务组件未被正确扫描:如果你使用了组件扫描来自动注册定时任务,确保你的定时任务组件所在的包被正确扫描到,并且被Spring容器管理。 4. 定时任务未启动:有时候,定时任务可能因为某些原因未能启动。你可以尝试重启应用程序,或者检查日志来查找相关的错误信息。 希望以上的建议能够帮助你解决问题!如果还有其他疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值