android 定时器 坑,SpringBoot中定时任务执行的坑

在sb中,支持多种定时执行模式(cron, fixRate, fixDelay),开启也非常简单:

1、在Application或者其他Autoconfig上

@EnableScheduling

2、在需要定时执行的函数上

@Scheduled(fixedDelayString = "${config.timeInMs}")

@Scheduled(cron = "${config.cronStr}")

不过这里有个小坑,默认这个schedule只使用一个线程。

如果你在多个函数上使用了@Scheduled,那么一定是一个执行完毕,才能排下一个。这往往不是我们想要的效果。

可以这么搞:

@Configuration

@EnableScheduling

public class SchedulingConfiguration {

// 给sched用的,默认只有1个,时间太长会阻塞

@Bean(destroyMethod = "shutdown")

public Executor taskScheduler() {

return Executors.newScheduledThreadPool(3);

}

}

搞完之后,多个@Scheduled可以并发执行了,最高并发度是3,但是同一个@Schedule不会并发执行。很智能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值