java 优雅退出
博客专区 > os_vc 的博客 > 博客详情
java 优雅退出
os_vc 发表于2年前
java 优雅退出
  • 发表于 2年前
  • 阅读 103
  • 收藏 2
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: netty使用的也是如此

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

标签: java优雅退出
共有 人打赏支持
粉丝 4
博文 98
码字总数 16464
×
os_vc
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: