0
点赞
收藏
分享

微信扫一扫

未更改定时任务默认线程池大小导致的定时任务阻塞问题


最近线上出现了一个奇怪的问题,由于业务需要,我们通过定时任务进行定时excel 导入操作,但是常常会出现一些定时任务在某些时间段不执行的问题,由于业务需要,这里的定时任务都设置五分钟执行一次,但是事实并非如此,定时任务并没有五分钟执行一次,甚至间隔几个小时,都不执行一次,刚开始我以为是因为定时任务没有执行完成,不会进行下一次执行

我想到难不成定时任务一次只会执行一个@scheduled标注的方法所以我搜索了, Schedule定时任务同一时刻只执行一个任务,得到了以下答案:

后来为了查明原因我首先下载了源码后,搜索了Scheduled.class 虽然找到了一些相关的类但是并没有找到定时任务真正执行的位置,所以我再次搜索了“@scheduled 源码分析”,其中有一篇文章,其中有这样一段话:

未更改定时任务默认线程池大小导致的定时任务阻塞问题_搜索


 最终了解到其实真正执行还是线程池在执行,结合上面的文章重新配置了定时任务线程池,解决问题,以下是是实验流程:

未更改定时任务默认线程池大小导致的定时任务阻塞问题_线程池_02

 创建两个定时任务

未更改定时任务默认线程池大小导致的定时任务阻塞问题_定时任务_03

 我把线程池配置注释掉只要执行到第一个任务就卡住

未更改定时任务默认线程池大小导致的定时任务阻塞问题_搜索_04

恢复线程池配置后,第一个任务卡住,第二个任务继续执行了

 

举报

相关推荐

0 条评论