也说Springboot的Schedule

   按理说,这玩意简单易用,不值得一提。

 事件是这样的,有个同事有几个简单的定时器,因此不需要上升到分布式,或者单独做一个定时器任务管理系统,于是就借用springbootk的@EnableScheduling来开启任务调度,一共大约三个定时器。

 过了几天同事说,这玩意有时候灵,有时候不灵,我想了想,问他一个问题,springboot这块的源码我没翻过,但是所有的schedule系统,至少要关心一下,执行任务的worker的线程是个什么情况。你去翻一下看是什么情况,我也翻一下源码。

 过了一会,他说改好了,在网上找到了方案。

 

  当时我已经把这块的spring源码翻了一下,我说这样解决没问题。同事说感觉有个问题,因为这个线程池是手工创建的,需要关闭不,我问了一下会儿,才知道他的疑惑在哪里

  

    这是关闭代码

   

    但是问题来了,在没加代码之前本身有一个线程池,代码是这样的

    

    他的疑问原来是如果不关闭这个以前旧的线程池,岂不是有问题,对于还记得关线程池,这个很好。不过他把这个学习机会让给了我。

  我看了一下代码,我说压根不需要关闭,原因是顺序。

  你仔细看会发现 ContextRefreshedEvent 的时候,去执行我们的定制代码,然后开始调度是在

InitializingBean中触发的,所以不得不承认spring如此设计确实相当合理,根本就从来没有多产生一个线程池,也就不存在关闭的问题。并且Spring在如何区分这个 ContextRefreshedEvent(即存在多个Event的)的时候也比网上很多办法好。

 

  

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值