Heim  >  Artikel  >  Java  >  Java-Shutdown-Hook

Java-Shutdown-Hook

PHPz
PHPzOriginal
2024-08-30 16:05:59650Durchsuche

Ein spezielles Konstrukt in Java, das es den Entwicklern ermöglicht, ein Plugin für einen Codeabschnitt zu erstellen, der beim Herunterfahren der Java Virtual Machine ausgeführt wird. Dies ist sehr notwendig, wenn wir während des Herunterfahrens Bereinigungsvorgänge durchführen müssen Das Herunterfahren der virtuellen Java-Maschine und das Herunterfahren der virtuellen Maschine aus Gründen wie dem Abbruch der Anforderung durch das Betriebssystem oder dem Ressourcenproblem können nicht mit allgemeinen Konstrukten gelöst werden, sondern können durch die Verwendung eines beliebigen Codeblocks gelöst werden, der durch das Herunterfahren bereitgestellt wird Hook und es ist eine Erweiterung der Klasse java.lang.Thread und die notwendige Logik wird während des Herunterfahrens der Java Virtual Machine in einer öffentlichen void run()-Methode bereitgestellt.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Funktionsweise des Shutdown-Hooks in Java

  • Es gibt zwei verschiedene Möglichkeiten, eine Java Virtual Machine herunterzufahren. Sie sind:
    • Ein Prozess, der kontrolliert wird.
    • Plötzlich.
  • Ein kontrollierter Prozess kann dazu führen, dass die Java Virtual Machine heruntergefahren wird, wenn einer der folgenden Ereignisse eintritt:
    • Beendigung des letzten Nicht-Daemon-Threads. Beispielsweise beginnt die Java Virtual Machine mit dem Beenden des Hauptthreads herunterzufahren.
    • Ein Interrupt-Signal wird vom Betriebssystem gesendet. Zum Beispiel durch Abmelden vom Betriebssystem oder durch Drücken von STRG + C.
    • exit() wird aus Java-Code aufgerufen.
  • Die Java Virtual Machine kann abrupt heruntergefahren werden, wenn eines der folgenden Ereignisse eintritt:
    • Wenn vom Betriebssystem ein Kill-Signal gesendet wird.
    • getRuntime().halt() wird aus Java-Code aufgerufen.
    • Der unerwartete Tod des Host-Betriebssystems. Zum Beispiel ein Stromausfall.
  • Die Java Virtual Machine ermöglicht die Ausführung der registrierten Funktionen, bevor das Herunterfahren des Systems abgeschlossen ist. Über diese Funktionen können die Ressourcen freigegeben oder bestimmte Housekeeping-Tätigkeiten durchgeführt werden. Diese Funktionen werden in der Java Virtual Machine-Terminologie als Shutdown-Hooks bezeichnet.
  • Diese Shutdown-Hooks sind alle initiiert, aber diese Threads sind nicht gestartet. Alle registrierten Hooks werden in einer nicht festgelegten Reihenfolge verarbeitet, wenn die Java Virtual Machine mit dem Herunterfahren beginnt. Die Java Virtual Machine stoppt, nachdem alle Hooks verarbeitet wurden.
  • Betrachten Sie das folgende Programm, um die Verwendung von Shutdown-Hooks in Java zu demonstrieren:

Code:

//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)
{
}
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java-Shutdown-Hook

Im obigen Programm ist eine Klasse namens mthr definiert, die einen Thread erweitert. Dann wird eine Klasse namens Shutdown definiert. Dann wird die Hauptmethode aufgerufen. Anschließend wird eine Instanz der Java-Laufzeitklasse erstellt. Dann wird die Shutdown-Hook-Methode mithilfe der Instanz der Laufzeitklasse aufgerufen und die Instanz der Mythr-Klasse erstellt. Der Methoden-Shutdown-Hook bewirkt, dass die print-Anweisung in der Shutdown-Klasse gedruckt wird, gefolgt von der Anweisung in der run-Methode der mythr-Klasse. Die Ausgabe des Programms ist wie im Schnappschuss oben dargestellt.

Beispiele für Java Shutdown Hook

Hier sind die folgenden Beispiele:

Beispiel #1

Java-Programm zur Demonstration der Verwendung des Shutdown-Hooks in einem Programm:

Code:

//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 ...");
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java-Shutdown-Hook

Im obigen Programm ist eine zum Herunterfahren aufgerufene Klasse definiert. Dann wird die Hauptmethode aufgerufen. Anschließend wird eine Instanz der Java-Laufzeitklasse erstellt und ein neuer Thread-Konstruktor als Parameter an die Shutdown-Hook-Methode übergeben. Die Ausgabe des Programms ist im Schnappschuss oben dargestellt.

Beispiel #2

Java-Programm zur Demonstration der Verwendung des Shutdown-Hooks in einem Programm:

Code:

//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();
}
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java-Shutdown-Hook

Im obigen Programm ist eine Klasse durcheinander definiert, die einen Thread erweitert und diese Funktion aufgerufen wird, wenn das Programm beendet wird. Dann wird die Hauptmethode aufgerufen. Dann wird die Shutdown-Hook-Methode aufgerufen, an die die Instanz der Klasse mess als Parameter übergeben wird. Anschließend wird der Programmanfang ausgedruckt. Dann wird die Wartezeit für den Thread gedruckt. Anschließend wird das Ende des Programms ausgedruckt. Die Ausgabe des Programms ist wie im Schnappschuss oben dargestellt.

Vorteile von Java Shutdown Hook

Der Java Shutdown Hook bietet mehrere Vorteile. Sie sind:

  • Die wichtigen Funktionen der Java Virtual Machine sind Shutdown-Hooks, da sie die Kapazität bieten, Ressourcen zu bereinigen oder den Status der Anwendung zu speichern, wenn die Java Virtual Machine heruntergefahren wird.
  • Die Shutdown-Hooks können zur Laufzeit ausgeführt werden, wenn die Java Virtual Machine normal oder abrupt heruntergefahren wird.
  • Mehr als ein Shutdown-Hook kann zu jedem Zeitpunkt während der Ausführung der Java Virtual Machine über eine Laufzeit-Anwendungsprogrammierschnittstelle registriert werden.

Fazit

In diesem Tutorial verstehen wir das Konzept von Shutdown-Hooks in Java durch Definition, die Funktionsweise von Shutdown-Hooks in Java anhand von Beispielen und deren Ausgaben.

Das obige ist der detaillierte Inhalt vonJava-Shutdown-Hook. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Vorlage in JavaNächster Artikel:Vorlage in Java