结合JUC谈Springboot优雅停机

废话少说

  • springboot的优雅停机是借助于ShutdownHook回调实现的(网上文章都说烂了)。

  • 在执行hook流程时,spring借助CountDownLatch阻塞线程达到在一定时间内不退出程序,来处理剩下的任务。

涉及到的知识点


Spring

  • SmartLifecycle

  • DefaultLifecycleProcessor

  • WebServerGracefulShutdownLifecycle

  • WebServerStartStopLifecycle

  • WebServerManager

  • TomcatWebServer implements WebServer

java

  • java.util.concurrent.CountDownLatch

  • java.lang.Runtime

  • java.lang.ApplicationShutdownHooks

  • java.lang.Shutdown


关于spring hook的二三事


  • 什么时候设置的hook

  • 什么时候触发的hook

  • 触发hook后续的流程

设置hook线程和触发hook


SpringApplication#run()

  • org.springframework.boot.SpringApplication#refreshContext()

  • org.springframework.context.support.AbstractApplicationContext#registerShutdownHook()

@Override
public void registerShutdownHook() {
   if (this.shutdownHook == null) {
      // No shutdown hook registered yet.this.shutdownHook = newThread(SHUTDOWN_HOOK_THREAD_NAME) {
         @
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值