欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何让java程序平滑停止

程序员文章站 2022-06-13 15:00:52
...

前言

       在敏捷开发中,迭代周期较快,版本发布频繁,需要经常更新到生产环境。新版本发布时,需要停止旧版本的程序。在停止旧版本程序的过程,我们希望旧版本程序能平滑停止,所谓的平滑停止,是指不会产生脏数据、事务不一致、数据状态已改变却未更新到数据库、kafka消费了数据而没有更新offset等问题。

 

如何让java程序退出

1.kill -9 pid   强制退出

2.kill -15 pid  发送信号给java程序,java程序如有Runtime.getRuntime().addShutdownHook(thread),会执行完后再退出

3.jmx,在程序中开放相应的MBean

4.事件触发,通过侦听zookeeper的某个znode状态变化或订阅mq的某个主题

5.在程序中开放http服务,如通过socket或启jetty服务

 

第1种当然不是我们想要的,第2、3、4、5种方法都能使java应用在退出之前会触发相应的操作,做一些善后工作,以保证程序不会突然停止,而导致各种异常、数据不一致的情况。

 

1.kill -9 pid不会触发Runtime.getRuntime().addShutdownHook(thread)

2.在开发阶段,通过eclipse直接终止程序,也不会触发Runtime.getRuntime().addShutdownHook(thread)

3.尽量不要在善后的工作中做过多的事情,以防阻塞造成程序死假

 

 

相关标签: 平滑停止