每次需要用Java运行进程,代码或线程时,都会创建运行时堆栈,以存储在执行线程时执行的操作。
运行时堆栈中的每个条目都称为堆栈帧或激活记录。流程调用函数后,将从运行时堆栈中删除其关联的数据。
一旦调用了所有函数,运行时堆栈将为空。这意味着需要将其从内存中删除。
此时,运行时堆栈被破坏,然后线程也被终止。
一旦线程完成(自愿)或强行执行(异常终止),可能会终止线程。
在运行时堆栈中破坏元素的顺序与在运行时任务中创建条目的顺序相反。
当线程正常运行并完成执行时,将调用main函数,并将其条目存储在运行时堆栈中。同样,将调用其他函数(如果有)并存储它们的条目。函数完成执行后,就该从运行时堆栈中删除条目了。执行的最后一个函数是删除条目的第一个函数。
当线程异常终止时,这意味着无法成功执行所有代码行。这意味着由于遇到错误而引发异常。以下是相同的示例-
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."); } }
输出结果
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)
名为Demo的类包含主函数,其中调用了“test”函数。 定义‘test’函数,其中调用‘test_2’函数。 定义了名为‘test_2’的函数,其中尝试将一个数字除以0。 这会导致在控制台上打印异常。 因此,控件不会到达‘println’行来打印错误消息。