文档章节

java 优雅退出

zvc888
 zvc888
发布于 2016/07/12 16:24
字数 148
阅读 123
收藏 2

package com.hhly.game.test;

import java.util.concurrent.TimeUnit;

import sun.misc.Signal;
import sun.misc.SignalHandler;

public class ShutDownGracefully implements SignalHandler{

    private static String getOSSignalType(){
        return System.getProperties().getProperty("os.name").toLowerCase().startsWith("win") ? "INT" : "USR2";
    }

     public static void main(String[] args) throws InterruptedException {  
            Signal sig = new Signal(getOSSignalType());  
            Signal.handle(sig, new ShutDownGracefully());
            Object o = new Object();
            synchronized (o) {
                o.wait(10000);
              }
            Runtime.getRuntime().exit(0);
     }

    @Override
    public void handle(Signal signalName) {
        invokeShutdownHook();
        
    }  
    private void invokeShutdownHook(){
        Thread t = new Thread(new ShutdownHook(), "ShutdownHook-Thread");
        Runtime.getRuntime().addShutdownHook(t);
     }
}
class ShutdownHook implements Runnable{
    @Override
    public void run() {
        System.out.println("ShutdownHook execute start...");
        System.out.print("Netty NioEventLoopGroup shutdownGracefully...");
        try {
            TimeUnit.SECONDS.sleep(10000);//模拟应用进程退出前的处理操作
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
        System.out.println("ShutdownHook execute end...");
    System.out.println("Sytem shutdown over, the cost time is 10000MS");
        }
}
 

 

windows 运行后 按ctrl+c, linux  kill -12 pid

© 著作权归作者所有

共有 人打赏支持
zvc888
粉丝 4
博文 107
码字总数 17062
作品 0
深圳
程序员
Spring boot 2.0 之优雅停机

spring boot 框架在生产环境使用的有一段时间了,它“约定大于配置”的特性,体现了优雅流畅的开发过程,它的部署启动方式()也很优雅。但是我使用的停止应用的方式是 ,即使写了脚本,还是...

rabbitGYK
05/20
0
0
Spring Cloud: 使用kill命令优雅关闭微服务, 解决退出时Eureka取消注册操作耗时过长的坑

关于Spring Cloud服务优雅关闭的方案有很多种了,这里介绍一下使用命令优雅关闭的方案,并解决会出现的问题。 所谓的优雅指两方面,一是程序在退出时要主动向Eureka取消注册自己,二是完成资...

司青玄
05/23
0
0
java RegularExpression

/* * * 使用Matcher的find() appendReplacement() appednTail()方法可以很灵活的进行替换, * * 相当强劲 太优雅了 * */ public static void MatcherReplacement() { Pattern p=Pattern.com......

TracyZhang
2012/06/25
0
0
Java 应用优雅停机

Java的优雅停机通常通过注册JDK的ShutdownHook来实现,当系统接收到退出指令后,首先标记系统处于退出状态,不再接收新的消息,然后将积压的消息处理完,最后调用资源回收接口将资源销毁,最...

dev_chao
02/28
0
0
开发第一个spring boot应用

我们来用spring boot开发一个简单的“hello world”web应用,使用maven构建。开始之前,先检查你的java与maven的版本,看是否是spring boot1.3支持的版本: $ java -versionjava version "1...

柳哥
2015/05/17
0
3

没有更多内容

加载失败,请刷新页面

加载更多

阿里开源的 java 诊断工具—— Arthas

Arthas 是 阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 java 的问题进行诊断! 一、概述 这个工具可以协助你做下面这些事情: 这个类是从哪个 jar 包加载而来的? 为什么会报各...

xiaomin0322
28分钟前
2
0
去除shell read 读取的最后一个字符

# 读取管道数据cat | while read line; do echo $line # 此时 line包含 \n or \r\ndone# 去除 read 读取的特殊字符line=${line%?} # 去除最后一个字符...

tigerBin
29分钟前
1
0
Qt之listView设置编辑状态

QListView默认是可以编辑的,可以用setEditTrigers设置QListView的条目是否可以编辑,以及如何进入编辑状态。比如: ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAb...

OceanStar
29分钟前
1
0
Linux批量替换

sed -i "s/http://cache.co188.com///image.co188.com/g" grep http:\/\/image.co188.com -rl . *.html sed -i "s/http://cache.co188.com///cache.co188.com/g" grep http:\/\/cache.co188.......

cpaku
39分钟前
1
0
设置plsql永久注册码

填写注册码: Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number:601769 password:xs374ca...

小橙子的曼曼
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部