Maison  >  Article  >  Java  >  Crochet d'arrêt Java

Crochet d'arrêt Java

PHPz
PHPzoriginal
2024-08-30 16:05:59650parcourir

Une construction spéciale en Java qui permet aux développeurs de créer un plugin d'un morceau de code qui sera exécuté lors de l'arrêt de la machine virtuelle Java et cela est très nécessaire lorsque nous devons effectuer des opérations de nettoyage lors de l'arrêt l'arrêt de la machine virtuelle Java et l'arrêt de la machine virtuelle pour des raisons telles que la suppression de la requête par le système d'exploitation ou le problème des ressources ne peuvent pas être résolus à l'aide de constructions générales mais peuvent être résolus en utilisant un bloc de code arbitraire fourni par l'arrêt hook et c'est une extension de la classe java.lang.Thread et la logique nécessaire est fournie dans une méthode public void run() lors de l'arrêt de la machine virtuelle Java.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Fonctionnement du Shutdown Hook en Java

  • Il existe deux manières différentes de s'arrêter une machine virtuelle Java. Ils sont:
    • Un processus maîtrisé.
    • Brusquement.
  • Un processus contrôlé peut provoquer l'arrêt de la machine virtuelle Java lorsque l'un des événements suivants se produit :
    • Fin du dernier thread non-démon. Par exemple, la machine virtuelle Java commence à s'arrêter avec la sortie du thread principal.
    • Un signal d'interruption est envoyé depuis le système d'exploitation. Par exemple, en vous déconnectant du système d'exploitation ou en appuyant sur CTRL + C.
    • exit() est appelé à partir du code Java.
  • La machine virtuelle Java peut commencer à s'arrêter brusquement lorsque l'un des événements suivants se produit :
    • Si un signal d'arrêt est envoyé depuis le système d'exploitation.
    • getRuntime().halt() est appelé à partir du code Java.
    • La mort inattendue du système d'exploitation hôte. Par exemple, un cas de panne de courant.
  • La machine virtuelle Java permet d'exécuter les fonctions enregistrées avant la fin de l'arrêt du système. Les ressources peuvent être libérées ou certaines activités de maintenance peuvent être effectuées à l'aide de ces fonctions. Ces fonctions sont appelées hooks d'arrêt dans la terminologie des machines virtuelles Java.
  • Ces hooks d'arrêt sont tous initiés mais ces threads ne sont pas démarrés. Tous les hooks enregistrés sont traités dans un ordre non spécifié lorsque la machine virtuelle Java commence le processus d'arrêt. La machine virtuelle Java s'arrêtera après avoir traité tous les hooks.
  • Considérez le programme ci-dessous pour démontrer l'utilisation des hooks d'arrêt en Java :

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

Le résultat du programme ci-dessus est tel qu'indiqué dans l'instantané ci-dessous :

Crochet d'arrêt Java

Dans le programme ci-dessus, une classe appelée mthr est définie et étend un thread. Ensuite, une classe appelée shutdown est définie. Ensuite, la méthode principale est appelée. Ensuite, une instance de la classe d'exécution Java est créée. Ensuite, la méthode du hook d'arrêt est appelée à l'aide de l'instance de la classe d'exécution et l'instance de la classe mythr est créée. Le hook d'arrêt de la méthode entraîne l'impression de l'instruction print de la classe shutdown, suivie de l'instruction de la méthode run de la classe mythr. Le résultat du programme est tel qu'indiqué dans l'instantané ci-dessus.

Exemples de crochet d'arrêt Java

Voici les exemples suivants mentionnés ci-dessous :

Exemple n°1

Programme Java pour démontrer l'utilisation du hook d'arrêt dans un programme :

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

Le résultat du programme ci-dessus est tel qu'indiqué dans l'instantané ci-dessous :

Crochet d'arrêt Java

Dans le programme ci-dessus, une classe appelée pour s'arrêter est définie. Ensuite, la méthode principale est appelée. Ensuite, une instance de la classe d'exécution Java est créée et un nouveau constructeur de thread est transmis en tant que paramètre à la méthode de hook d'arrêt. La sortie du programme est affichée dans l'instantané ci-dessus.

Exemple n°2

Programme Java pour démontrer l'utilisation du hook d'arrêt dans un programme :

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

Le résultat du programme ci-dessus est tel qu'indiqué dans l'instantané ci-dessous :

Crochet d'arrêt Java

Dans le programme ci-dessus, un désordre de classe est défini, et il étend un thread et cette fonction est appelée lorsque le programme se termine. Ensuite, la méthode principale est appelée. Ensuite, la méthode de hook d'arrêt est appelée à laquelle l'instance de la classe mess est passée en paramètre. Ensuite, le début du programme est imprimé. Ensuite, le temps d'attente pour le fil est imprimé. Ensuite, la fin du programme est imprimée. Le résultat du programme est tel qu'indiqué dans l'instantané ci-dessus.

Avantages du crochet d'arrêt Java

Le hook d'arrêt Java présente plusieurs avantages. Ce sont :

  • Les fonctionnalités importantes de la machine virtuelle Java sont les hooks d'arrêt car elles offrent la capacité de nettoyer les ressources ou de stocker l'état de l'application lorsque la machine virtuelle Java s'arrête.
  • Les hooks d'arrêt peuvent être exécutés au moment de l'exécution lorsque la machine virtuelle Java s'arrête normalement ou brusquement.
  • Plusieurs hooks d'arrêt peuvent être enregistrés à tout moment pendant l'exécution de la machine virtuelle Java via une interface de programmation d'application d'exécution.

Conclusion

Dans ce tutoriel, nous comprenons le concept des hooks d'arrêt en Java à travers la définition, le fonctionnement des hooks d'arrêt en Java à travers des exemples et leurs sorties.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Modèle en JavaArticle suivant:Modèle en Java