1、在项目中通过启定时器定时完成消费缓存中的数据启了好几个定时器
2、在测试环境一直没有问题,但上生产总是太慢了今天 看了代码日志,发现是定时器处理这一块很慢但我明明设置了2秒处理一次可实际日志显示却要几分钟MMP
3、查了下spring boot 定时器的数据情况发现spring boot 定时器默认是单线程,而我的项目中处理缓存中数据又多,会导致单个定时器一直占用线程
4、给spring boot 配置定时器线程池满足这种情况
/**
* 多线程处理定时任务
*/
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import java.util.concurrent.Executors;
/**
* 多线程处理定时任务
*/
@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//设定一个长度10的定时任务线程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
}
}
5、参考 https://blog.csdn.net/u013456370/article/details/79411952