首页 > 作文

Spring Boot多个定时任务阻塞问题的解决方法

更新时间:2023-04-04 13:09:12 阅读: 评论:0

前言

今天这篇文章介绍一下spring boot 中 如何开启多线程定时任务?

为什么spring boot 定时任务是单线程的?

想要解释为什么,一定要从源码入手,直接从@enablescheduling这个注解入手,找到了这个scheduledtaskregistrar类,其中有一段代码如下:

protected void scheduletasks() {  if (this.taskscheduler == null) {   this.localexecutor = executors.newsinglethreadscheduledexecutor();   this.taskscheduler = new concurrenttaskscheduler(this.localexecutor);  }}

如果taskscheduler为null,则创建单线程的线程池:executors.newsinglethreadscheduledexecutor()。

多线程定时任务如何配置?

下面介绍三种方案配置多线程下的定时任务。

1、重写schedulingconfigurer#configuretas江苏大专排名ks()

直接实现schedulingconfigurer这个接口,设置taskscheduler,代码如下:

@configurationpublic class scheduleconfig implements schedulingconfigurer {    @override    public void configuretasks(scheduledtaskregistrar taskregistrar) {        //设定一个长度10的定时任务线程池        taskregistrar.tscheduler(executors.newscheduledthreadpool(10));    }}

2、通过配置开启

spring boot quartz 已经提供了一个配置用来配置线程池的大小,如下;

spring.task.scheduling.pool.size=10

只需要在配置文件中添加如上的配置即可生效!

3、结合@async

@async这个注解都用过,用来开启异步任务的,使用@async这个注解之前一定是要先配置线程池的,配置如下:

    @bean    public threadpooltaskexecutor taskexecutor() {        threadpooltaskexecutor pool党员的党龄从taskexecutor = new threadpooltaskexecutor();        pooltaskexecutor.tcorepoolsize(4);        pooltaskexecutor.tmaxpoolsize(6);        // 设置线程活跃时间(秒)        pooltaskexecutor.tkeepaliveconds(120);        // 设置队列容量        pooltaskexecutor.tqueuecapacity(40);        pooltaskexecutor.trejectedexecution科幻作文handler(new threadpoolexecutor.callerrunspolicy());        // 等待所有任务结束后再关闭线程池        pooltaskexecutor.twaitfortaskstocompleteonshutdown(true);        return pooltaskexecutor;    }

然后在@scheduled方法上标注@async这个注解即可实现多线程定时任务,代码如下:

 @async    @scheduled(cron = "0/2 * * * * ? ")  小善大爱  public void test2() {        system.out.println("..................执行test2.................");    }

总结

本篇文章介绍了spring boot 中 实现多线程定时任务的三种方案,你喜欢哪一种?

到此这篇关于spring boot多个定时任务阻塞问题解决的考拉小巫的英语学习日记文章就介绍到这了,更多相关springboot多定时任务阻塞内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 13:09:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f74c4215055d80ca1257d75dfd9a07a7.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Spring Boot多个定时任务阻塞问题的解决方法.doc

本文 PDF 下载地址:Spring Boot多个定时任务阻塞问题的解决方法.pdf

标签:线程   多线程   注解   三种
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图