>  기사  >  Java  >  Java 종료 후크

Java 종료 후크

PHPz
PHPz원래의
2024-08-30 16:05:59701검색

개발자가 Java 가상 머신을 종료하는 동안 실행될 코드 조각의 플러그인을 수행할 수 있도록 하는 Java의 특수 구성이며 이는 종료하는 동안 정리 작업을 수행해야 할 때 매우 필요합니다. Java 가상 머신의 다운 및 운영 체제의 요청 종료 또는 리소스 문제 등의 이유로 가상 머신이 종료되는 경우 일반적인 구조로는 해결할 수 없지만 종료에서 제공하는 임의의 코드 블록을 사용하면 해결할 수 있습니다. Hook이며 java.lang.Thread 클래스의 확장이며 Java 가상 머신을 종료하는 동안 public void run() 메소드 내부에 필요한 로직이 제공됩니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

Java에서 종료 후크 작동

  • Java 가상 머신을 종료하는 방법에는 두 가지가 있습니다. 그들은:
    • 통제되는 프로세스
    • 갑자기.
  • 제어되는 프로세스로 인해 다음 중 하나가 발생하면 Java 가상 머신이 종료될 수 있습니다.
    • 데몬이 아닌 마지막 스레드가 종료됩니다. 예를 들어, 메인 스레드가 종료되면 Java 가상 머신이 종료되기 시작합니다.
    • 운영 체제에서 인터럽트 신호가 전송됩니다. 예를 들어 운영 체제에서 로그오프하거나 CTRL + C를 누릅니다.
    • exit()는 Java 코드에서 호출됩니다.
  • 다음 중 하나가 발생하면 Java 가상 머신이 갑자기 종료될 수 있습니다.
    • 운영체제에서 종료 신호를 보내는 경우
    • getRuntime().halt()는 Java 코드에서 호출됩니다.
    • 호스트 운영체제의 예상치 못한 죽음. 예를 들어 정전이 되는 경우입니다.
  • Java Virtual Machine을 사용하면 시스템 종료가 완료되기 전에 등록된 기능을 실행할 수 있습니다. 이러한 기능을 사용하여 리소스를 해제하거나 특정 관리 활동을 수행할 수 있습니다. 이러한 기능을 Java 가상 머신 용어로 종료 후크라고 합니다.
  • 이러한 종료 ​​후크는 모두 시작되지만 스레드는 시작되지 않습니다. 등록된 모든 Hook은 Java Virtual Machine이 종료 프로세스를 시작할 때 지정되지 않은 순서로 처리됩니다. 모든 Hook을 처리한 후 Java Virtual Machine이 중지됩니다.
  • Java에서 종료 후크 사용을 보여주기 위해 아래 프로그램을 고려하세요.

코드:

//a class called mythr is defined and it extends a thread
class MyThr extends Thread
{
public void run()
{
System.out.println("The task of shut down hook is completed");
}
}
<em>//a class called shutdown is defined</em>
public class Shutdown
{
<em>//main method is called</em>
public static void main(String[] args)throws Exception
{
<em>//an instance of java runtime class is created</em>
Runtime roll=Runtime.getRuntime();
<em>//shutdown hook method is called using the instance of runtime class and the instance of mythr class is created</em>
roll.addShutdownHook(new MyThr());
System.out.println("The main starts to sleep. Press control and c to exit");
try
{
Thread.sleep(3000);
}
catch (Exception e)
{
}
}
}

위 프로그램의 출력은 아래 스냅샷과 같습니다.

Java 종료 후크

위 프로그램에서는 mthr이라는 클래스가 정의되어 있으며 스레드를 확장합니다. 그런 다음 shutdown이라는 클래스가 정의됩니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 Java 런타임 클래스의 인스턴스가 생성됩니다. 그런 다음 런타임 클래스의 인스턴스를 사용하여 종료 후크 메서드가 호출되고 신화 클래스의 인스턴스가 생성됩니다. 메소드 shutdown 후크를 사용하면 shutdown 클래스의 print 문이 인쇄되고 그 뒤에 mythr 클래스의 run 메소드에 있는 문이 인쇄됩니다. 프로그램의 출력은 위의 스냅샷과 같습니다.

Java 종료 후크의 예

아래에 언급된 예는 다음과 같습니다.

예시 #1

프로그램에서 종료 후크 사용을 보여주는 Java 프로그램:

코드:

//a class called shutdown is defined
public class ShutDown
{
//main method is called
public static void main(String[] args)
{
//an instance of java runtime class is created and a new thread constructor is passed as a parameter to shutdown hook method
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
System.out.println("the shut down hook is in progress !");
}
});
System.out.println("Termination of application ...");
}
}

위 프로그램의 출력은 아래 스냅샷과 같습니다.

Java 종료 후크

위 프로그램에는 종료를 호출하는 클래스가 정의되어 있습니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 Java 런타임 클래스의 인스턴스가 생성되고 새 스레드 생성자가 종료 후크 메서드에 매개 변수로 전달됩니다. 프로그램의 출력은 위의 스냅샷에 표시됩니다.

예시 #2

프로그램에서 종료 후크 사용을 보여주는 Java 프로그램:

코드:

//a class called demo is defined
public class Demo
{
// a class called mess is defined and it extends a thread and this function is called when the program is exiting
static class Mess extends Thread
{
public void run()
{
System.out.println("Good Bye.");
}
}
//main method is called
public static void main(String[] args)
{
try
{
//shutdown hook method is called to which the instance of the class mess is passed as a parameter
Runtime.getRuntime().addShutdownHook(new Mess());
// the beginning of the program is printed
System.out.println("Beginning of the program...");
// the wait time for the thread is printed
System.out.println("The wait time for the thread is three seconds...");
Thread.sleep(3000);
//Ending of the program is printed
System.out.println("Ending of the program...");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

위 프로그램의 출력은 아래 스냅샷과 같습니다.

Java 종료 후크

위 프로그램에서는 클래스 mess를 정의하고 스레드를 확장하며 프로그램이 종료될 때 이 함수가 호출됩니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 클래스 mess의 인스턴스가 매개변수로 전달되는 종료 후크 메소드가 호출됩니다. 그런 다음 프로그램의 시작 부분이 인쇄됩니다. 그런 다음 스레드의 대기 시간이 인쇄됩니다. 그런 다음 프로그램의 엔딩이 인쇄됩니다. 프로그램의 출력은 위의 스냅샷과 같습니다.

Java 종료 후크의 장점

Java 종료 후크에는 여러 가지 장점이 있습니다. 그들은:

  • Java 가상 머신의 중요한 기능은 종료 후크입니다. Java 가상 머신이 종료될 때 리소스를 정리하거나 애플리케이션 상태를 저장할 수 있는 기능을 제공하기 때문입니다.
  • 종료 후크는 Java 가상 머신이 정상적으로 또는 갑자기 종료될 때 런타임에 실행될 수 있습니다.
  • 런타임 애플리케이션 프로그래밍 인터페이스를 통해 Java 가상 머신을 실행하는 동안 언제든지 두 개 이상의 종료 후크를 등록할 수 있습니다.

결론

이 튜토리얼에서는 정의를 통해 Java의 종료 후크 개념을 이해하고 예제와 해당 출력을 통해 Java의 종료 후크 작동을 이해합니다.

위 내용은 Java 종료 후크의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Java의 템플릿다음 기사:Java의 템플릿