Maison  >  Article  >  Java  >  Mécanisme de pile d'exécution en Java

Mécanisme de pile d'exécution en Java

WBOY
WBOYavant
2023-08-31 21:37:06725parcourir

Mécanisme de pile dexécution en Java

Chaque fois que vous devez exécuter un processus, un code ou un thread en Java, une pile d'exécution est créée pour stocker les opérations effectuées lors de l'exécution du thread.

Chaque entrée dans la pile d'exécution est appelée cadre de pile ou enregistrement d'activation. Une fois qu'un processus appelle une fonction, les données qui lui sont associées sont supprimées de la pile d'exécution.

Lorsque toutes les fonctions auront été appelées, la pile d'exécution sera vide. Cela signifie qu'il doit être supprimé de la mémoire.

À ce stade, la pile d'exécution est détruite, puis le thread est terminé.

La résiliation d'un fil de discussion peut survenir lorsque le fil se termine (volontaire) ou forcé (résiliation anormale).

L'ordre de destruction des éléments dans la pile d'exécution est opposé à l'ordre de création des entrées de tâches d'exécution.

Lorsque le thread s'exécute normalement et termine son exécution, la fonction principale est appelée et son entrée est stockée dans la pile d'exécution. De même, d'autres fonctions (le cas échéant) sont appelées et leurs entrées sont stockées. Une fois l'exécution de la fonction terminée, l'entrée est supprimée de la pile d'exécution. La dernière fonction exécutée est la fonction de la première entrée supprimée.

Lorsqu'un thread se termine anormalement, cela signifie que toutes les lignes de code ne peuvent pas être exécutées avec succès. Cela signifie qu'une exception est levée lorsqu'une erreur est rencontrée. Voici un exemple :

Exemple

Démo en ligne

public class Demo{
   public static void main(String[] args){
      test();
   }
   public static void test(){
      test_2();
      System.out.println("This is a test method.");
   }
   public static void test_2(){
      System.out.println(45/0);
      System.out.println("This is a method that divides 10 by 0.");
   }
}

Output

Exception in thread "main" java.lang.ArithmeticException: / by zero
at Demo.test_2(Demo.java:14)
at Demo.test(Demo.java:9)
at Demo.main(Demo.java:5)

Une classe nommée Demo contient la fonction principale, dans laquelle la fonction 'test' est appelée. La fonction 'test' est définie et la fonction 'test_2' y est appelée. Une fonction appelée 'test_2' est définie dans laquelle on tente de diviser un nombre par 0. Cela entraîne l'impression d'une exception sur la console. Par conséquent, le contrôle n’atteint pas la ligne « println » pour imprimer le message d’erreur.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer