Spring Boot定时+多线程执行过程解析
这篇文章主要介绍了SpringBoot定时+多线程执行过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
SpringBoot定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务。
具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了。
执行效率提升10倍以上,执行效率提升10倍以上,执行效率提升10倍以上。
重要的事情说三遍!
本文不深入介绍具体的原理,大家如果要实现类似的功能,只需要执行下面1~5即可。
(1)定时任务实现
在需要定时执行的的方法上面增加注解@Scheduled(cron="010017**?")//[秒][分][小时][日][月][周][年]。
其中cron类似于Linux定时执行的写法,上述表示该任务每天17:00执行一次。
(2)定时任务方法内部多线程执行的部分
需要多线程执行的部分,要重新定义一个类,然后注入该类的变量。如我这里定义了一个类DoBackupTask,在这个类中通过多线程方式执行任务。
(3)多线程实现部分
多线程执行方法上,增加注解@Async("taskExecutor"),参数为线程池的名称
(4)线程池实现
线程池我定义了一个类,在该类中定义了一个方法asyncExecutor。该方法生成ThreadPoolTaskExecutor的一个对象,设置线程数量,线程池的名称等参数。
(5)当上述步骤都做好了,然而并没有效果。可能你漏了最关键的一步:在应用启动类上,增加注解
@EnableScheduling启用多线程
@EnableAsync异步执行
如果还是不清楚具体位置,就找@SpringBootApplication这个注解,放在一起就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。