`

如何让java程序平滑停止

阅读更多

前言

       在敏捷开发中,迭代周期较快,版本发布频繁,需要经常更新到生产环境。新版本发布时,需要停止旧版本的程序。在停止旧版本程序的过程,我们希望旧版本程序能平滑停止,所谓的平滑停止,是指不会产生脏数据、事务不一致、数据状态已改变却未更新到数据库、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.尽量不要在善后的工作中做过多的事情,以防阻塞造成程序死假

 

 

分享到:
评论

相关推荐

    Java Service Wrapper 将你的java应用程序安装成windows系统服务

    Java Service Wrapper是一个强大的工具,它允许开发者将Java应用程序轻松地包装为Windows系统服务,以便在操作系统启动时自动启动Java程序,并能实现与系统服务相同的管理功能,如自动重启、日志记录等。这个工具...

    贪吃蛇的多线程java程序

    以下是对这个多线程Java程序的一些详细解释。 1. **线程基础** - 在Java中,线程是程序执行的最小单位,可以同时执行多个任务。通过创建和管理线程,可以提高程序的并发性和效率。 - `Thread` 类是Java提供的线程...

    用java编写的随即滚动姓名的小程序

    在Java编程环境中,开发一个随机滚动姓名的小程序是一项有趣且实用的任务,特别是在组织活动或抽奖等场合。这个程序的核心功能是实现多线程,使得姓名能够动态、随机地滚动显示,同时提供一种“随机配对”模式,可以...

    java tomcat 监控程序

    这可能涉及调用操作系统级别的命令来停止和启动Tomcat服务,或者利用Tomcat自身的管理API来实现平滑重启。 4. **报警机制**:当程序挂掉并自动重启时,监控程序应具备发送报警的能力。这通常通过集成短信服务提供商...

    JAVA版风扇小程序

    它的设计目标是“一次编写,到处运行”,这意味着编写好的Java程序可以在任何支持Java的平台上运行,无需重新编译。这得益于Java的虚拟机技术,即JVM(Java Virtual Machine)。 在这个风扇小程序中,我们可以推测...

    几个有意思的JAVA小动画程序

    这些都是编写任何Java程序的基础。 2. **面向对象编程**:Java是一种严格的面向对象语言,这意味着你需要理解类、对象、封装、继承和多态等概念。在小动画中,不同的对象可能代表不同的图形元素或动画角色。 3. **...

    java实现一个滚动字幕的程序

    这个程序的核心目标是让文字在指定区域里连续滚动显示,类似于电视新闻底部的跑马灯效果。下面我们将深入探讨如何实现这样一个功能。 首先,我们需要了解Java Swing库,它是Java提供的一套用于构建图形用户界面...

    简单微信程序java课程设计报告.doc

    在本篇报告中,我们将探讨一个基于Java技术的简单微信程序设计项目,该课程设计旨在让学生运用所学的Java知识和Android开发技能,构建一个类似于微信的登录注册系统,并实现基本的功能界面。以下是对该课程设计的...

    Java编写的炫酷俄罗斯方块

    7. **动画效果**:为了增加游戏的视觉吸引力,开发者可能会使用延时或帧率控制(例如使用`java.util.Timer`类)来平滑地显示方块的下落和旋转,使游戏看起来更流畅。 8. **得分系统**:每当消除一行或多行,游戏...

    java 关于动画的一段处理程序,很精采的-java animation on the procedures for hand

    在Java编程语言中,动画是实现用户界面动态效果的关键技术,它可以增强应用程序的用户体验和视觉吸引力。本节将深入探讨Java中的动画处理程序,并通过一个名为"java animation on the procedures for hand"的精彩...

    用java自己写的一个简单的字幕滚动程序 有兴趣的可以下载看一下

    - **包结构**:Java程序通常会按照功能或类的用途组织成不同的包,方便管理和复用。 通过这个简单的字幕滚动程序,学习者可以深入理解Java编程的核心概念,并逐步提升到更复杂的GUI编程和事件处理。此外,这个项目...

    Java动画编程优化技术探讨.pdf

    最后,内存泄露问题是由于Java程序运行时自动回收内存的GC机制不能有效回收不再使用的对象,导致这些对象长期占用设备内存资源,造成CPU资源下降,影响操作体验,严重时甚至会使设备停止运行。 针对上述问题,文档...

    java GUI做的抽奖转盘

    Java GUI(图形用户界面)是Java编程语言中用于创建用户交互界面的一部分,它允许开发者构建桌面应用程序,提供视觉反馈和用户交互。在这个“java GUI做的抽奖转盘”项目中,我们很可能看到一个利用Java Swing或...

    java3D的jar包

    10. **社区支持**:虽然Java3D官方支持已停止,但开源社区仍有一些项目,如Java3D-Fork,持续维护和更新,为开发者提供帮助。 综上所述,"java3D的jar包"是构建3D图形应用的重要工具,包含了丰富的功能和接口,可...

    基于JAVA的移动方块

    6. **线程与动画**: 要让方块平滑地沿着路径移动,程序可能使用了多线程技术。一个常见的做法是创建一个独立的线程,该线程在后台不断地更新方块的位置,直到鼠标释放或路径结束。这样可以确保GUI的响应性,不会因为...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第2部分).pdf

    总的来说,这个项目旨在让学生掌握Java编程基础,了解如何利用IDE进行项目开发,以及如何通过多线程实现动态效果。通过实践,学生不仅可以学习到Java的基本语法和面向对象编程,还能深入理解Applet的生命周期和动画...

    Java游戏编程初级教程

    Java提供了Java Sound API来处理音频播放,包括加载、播放、暂停和停止音效。 七、游戏对象和状态管理 游戏中的对象,如角色、敌人、道具等,都有各自的状态和行为。通过设计良好的类结构和状态机,可以有效地管理...

    tetris_java.rar_JAVA俄罗斯方块_game java

    【标题】"tetris_java.rar" 是一个基于JAVA语言开发的俄罗斯方块游戏项目,而"JAVA俄罗斯方块_game java"则强调了该程序的主要功能和编程语言。这个压缩包包含了一个使用Java编写的经典游戏——俄罗斯方块的源代码。...

    Java小球撞击

    这是编写任何Java程序的基础。 2. **Swing库**:Java的Swing库用于构建GUI应用程序。在这个项目中,我们需要使用`JFrame`来创建主窗口,`JPanel`作为小球移动的画布,以及`Graphics`类进行绘图操作。 3. **图形...

    JAVA实验字符串的滚动

    这里我们让程序每20毫秒暂停一次,这样可以使得文本以较为平滑的方式滚动。 #### 界面刷新 最后,为了确保每次更新文本位置后都能够立即看到效果,我们需要调用`repaint`方法来强制刷新界面。这一步对于实现平滑...

Global site tag (gtag.js) - Google Analytics