欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Kill指令停掉Java程序的問(wèn)題

 更新時(shí)間:2021年10月21日 11:48:56   作者:Jack魏  
這篇文章主要介紹了Kill指令停掉Java程序的思考,主要探究kill指令和java的關(guān)閉鉤子的問(wèn)題,需要的朋友可以參考下

今天同事問(wèn)我,一個(gè)jar包,啟動(dòng)起來(lái),端口正常,而且防火墻全都關(guān)閉了,為什么前臺(tái)訪問(wèn)出錯(cuò)?
我第一反應(yīng)是啟動(dòng)是否正常,然后就是阿里云安全組有沒有配置對(duì)應(yīng)的端口。
后來(lái)發(fā)現(xiàn)自己也不對(duì),是因?yàn)?code>kill -9的問(wèn)題,所以本文就是來(lái)探究kill指令和java的關(guān)閉鉤子

1. Java的原生關(guān)閉鉤子

直接使用這個(gè),不管使用什么方式停止程序,都不會(huì)調(diào)用關(guān)閉鉤子,
不知道自己哪里出錯(cuò),希望大佬指正。

public class RunTest {
    public static void main(String[] args) throws InterruptedException {
       int i = 1;
        while (i<10000) {
            System.out.println(i);
            i++;
            Thread.sleep(1000);
        }

        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("I'll be back");
            }
        }));
    }
}

1.1 使用IDE關(guān)閉調(diào)試

可以看到,我用IDE點(diǎn)擊運(yùn)行,然后關(guān)閉,就直接停止了,沒有調(diào)用關(guān)閉鉤子。

在這里插入圖片描述

1.2 使用kill -15 指令

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

1.3 使用kill -9 指令

在這里插入圖片描述

在這里插入圖片描述

終于有位大佬提出了質(zhì)疑,
說(shuō)需要把關(guān)閉鉤子注冊(cè)方法寫到while循環(huán)上面,
這樣才能注冊(cè)成功,于是我就試了一下,
事就這樣成了。
感謝 黙塵 博主的指導(dǎo)。

修改后代碼:

public class RunTest {
    public static void main(String[] args) throws InterruptedException {

       Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("I'll be back");
            }
        }));
        
       int i = 1;
        while (i<10000) {
            System.out.println(i);
            i++;
            Thread.sleep(1000);
        }
    }
}

這時(shí)候用IDE測(cè)試,用debug模式停止是正常的:

在這里插入圖片描述

在linux環(huán)境,使用kill -15:

在這里插入圖片描述

在linux環(huán)境,使用kill -9:

在這里插入圖片描述

2. SpringBoot關(guān)閉鉤子

測(cè)試jar包下載地址:
關(guān)閉鉤子測(cè)試jar包

import org.springframework.beans.factory.DisposableBean;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class ApplicationListens implements CommandLineRunner, DisposableBean {
    @Override
    public void destroy() throws Exception {
        System.out.println("銷毀程序------");
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("運(yùn)行程序------");
    }
}

2.1 使用IDE關(guān)閉

在這里插入圖片描述

2.2 使用kill -15 指令

在這里插入圖片描述

2.3 使用kill -9 指令

在這里插入圖片描述

所以,如果想優(yōu)雅的關(guān)閉應(yīng)用,需要用kill -15 ,
但是有時(shí)候我們會(huì)遇到關(guān)閉掉的情況,
那只能用kill -9

參考文獻(xiàn):
SpringBoot-監(jiān)聽?wèi)?yīng)用啟動(dòng)與關(guān)閉的回調(diào)鉤子

到此這篇關(guān)于Kill指令停掉Java程序的思考的文章就介紹到這了,更多相關(guān)Kill指令停掉Java程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot 啟動(dòng)注解過(guò)程分析

    Spring Boot 啟動(dòng)注解過(guò)程分析

    這篇文章主要為大家介紹了Spring Boot 啟動(dòng)注解過(guò)程示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java高性能本地緩存框架Caffeine的實(shí)現(xiàn)

    Java高性能本地緩存框架Caffeine的實(shí)現(xiàn)

    本文主要介紹了Java高性能本地緩存框架Caffeine的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 劍指Offer之Java算法習(xí)題精講數(shù)組查找與字符串交集

    劍指Offer之Java算法習(xí)題精講數(shù)組查找與字符串交集

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • SpringBoot日志框架如何使用

    SpringBoot日志框架如何使用

    這篇文章主要介紹了SpringBoot日志框架如何使用,幫助大家更好的理解和使用springboot日志框架,感興趣的朋友可以了解下
    2021-01-01
  • 詳解JVM中的本機(jī)內(nèi)存跟蹤

    詳解JVM中的本機(jī)內(nèi)存跟蹤

    在本文里小編給大家整理了一篇關(guān)于JVM中的本機(jī)內(nèi)存跟蹤的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • 面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類:TreeSet

    面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類:TreeSet

    這篇文章主要介紹了Java TreeSet類的簡(jiǎn)單理解和使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 解析java中的condition

    解析java中的condition

    Condition 將 Object 監(jiān)視器方法(wait()、notify()和notifyAll())分解成截然不同的對(duì)象,以便通過(guò)將這些對(duì)象與任意Lock實(shí)現(xiàn)組合使用,為每個(gè)對(duì)象提供多個(gè)等待 set(wait-set)
    2021-06-06
  • Java實(shí)現(xiàn)文本編譯器

    Java實(shí)現(xiàn)文本編譯器

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)文本編譯器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java中的模板模式說(shuō)明與實(shí)現(xiàn)

    Java中的模板模式說(shuō)明與實(shí)現(xiàn)

    這篇文章主要介紹了Java中的模板模式說(shuō)明與實(shí)現(xiàn),模板方法模式,又叫模板模式,在一個(gè)抽象類公開定義了執(zhí)行它的方法的模板,它的子類可以更需要重寫方法實(shí)現(xiàn),但可以成為典型類中定義的方式進(jìn)行,需要的朋友可以參考下
    2023-10-10
  • maven私服搭建的實(shí)現(xiàn)步驟

    maven私服搭建的實(shí)現(xiàn)步驟

    本文主要介紹了maven私服搭建的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論