跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 怎么写代码才能让 springboot 应用进程停止啊
未分類
10 2 月 2021

怎么写代码才能让 springboot 应用进程停止啊

怎么写代码才能让 springboot 应用进程停止啊

資深大佬 : luxinfl 4

当应用启动时,如果端口号被占用,程序会报错,但是 idea 上项目还是运行的状态。因为在端口占用前,应用起了几个线程去跑其他任务,导致应用没有正常关闭。有比较靠谱的方法可以让程序正常停止么? 有想过

try {     SpringApplication.run(ClcsApplication.class, args); }catch (Exception e){     System.exit(0); } 

但是不建议使用。 也想过

MyApplicationRunner implements ApplicationListener<ApplicationFailedEvent> 

但是需要一个个的关闭线程,而且还不一定好用。

大佬有話說 (21)

  • 資深大佬 : sutra

    你得先讓自己啟的那幾個線程終止呀。

  • 資深大佬 : cslive

    windows 下打开命令窗口运行 taskkill /f /im java.exe

  • 資深大佬 : yalin

    kill 进程?

  • 資深大佬 : wbf1013

    其他线程只要是在 spring 的生命周期里就可以了,主线程挂了就全挂了

  • 資深大佬 : Kinnice

    可以试试在最前面加个启动环境检测,检测不过就不往下走了(

  • 主 資深大佬 : luxinfl

    @cslive
    @yalin 我是在想程序怎么处理,不用服务器敲命令

  • 主 資深大佬 : luxinfl

    @wbf1013
    @Kinnice
    我现在把几个 kafka 的 bean 延迟启动了,但是不知道为啥,端口号被占用报错,程序还是不能正常停止。看了 dump 信息有好多线程在 waiting

  • 資深大佬 : MapHacker

    代码里面直接 killProcess ?

  • 主 資深大佬 : luxinfl

    @MapHacker 这个和直接 System.exit 一样吧,

  • 資深大佬 : leeyuzhe

    打成 jar 包运行的时候会全部退出,但是在 idea 里面不会,不知道为什么

  • 資深大佬 : yumenawei

    Runtime.getRuntime().addShutdownHook(new Thread(() -> System.out.println(“Hello world !”)));
    试下这个?

  • 資深大佬 : intmax2147483647

    为什么不从根本上解决问题 -> 端口冲突?

  • 資深大佬 : devld

    启动的几个子线程的任务中实现 DisposableBean,在回调中终止任务。

  • 資深大佬 : wzcloud

    监听应用关闭事件,然后主动关闭线程;或者把那几个现场设置成守护线程?

  • 主 資深大佬 : luxinfl

    @intmax2147483647 测试提出来的,没办法。而且吧端口号不能用,程序不应该退出麽。。

  • 主 資深大佬 : luxinfl

    @devld 像异步线程池这个,日志就是 shutting down,这意思是不是一直在停止。。。

  • 主 資深大佬 : luxinfl

    @wzcloud 怎么主动关线程,这个真不会。。。

  • 資深大佬 : Kasumi20

    中断其它线程,其它线程通过 Thread.sleep(0)响应中断异常

  • 主 資深大佬 : luxinfl

    @Kasumi20 这不用搞个 while 循环麽?

  • 資深大佬 : newmlp

    kill -9

  • 資深大佬 : devld

    @luxinfl 我的理解是,线程池用 shutdownNow 停止时,会 interrupt 所有正在运行的线程。所以在任务线程中响应中断信号就可以了。
    对于被 io 阻塞的线程,interrupt 后,会抛出 InterruptedException,这时候停止任务就 ok 了;对于循环,在循环开始时,判断 Thread.isInterrupted 是否是 true,是 true 就结束循环。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具