Java 区别于;调用堆栈“;及;“线程堆栈”;

Java 区别于;调用堆栈“;及;“线程堆栈”;,java,multithreading,stack,semantics,Java,Multithreading,Stack,Semantics,在Java多线程处理中,调用堆栈和线程堆栈这两个术语之间有语义上的区别吗?每个线程都有自己的调用堆栈,“调用堆栈”和“线程堆栈”是一样的。将其称为“线程堆栈”只是强调调用堆栈是特定于线程的 : 启动新线程时,Java虚拟机将为该线程创建一个新的Java堆栈。如前所述,Java堆栈将线程的状态存储在离散的帧中。Java虚拟机只直接在Java堆栈上执行两个操作:推送和弹出帧 线程当前正在执行的方法是线程的当前方法。当前方法的堆栈帧是当前帧。定义当前方法的类称为当前类,当前类的常量池称为当前常量池。在

在Java多线程处理中,
调用堆栈
线程堆栈
这两个术语之间有语义上的区别吗?

每个线程都有自己的调用堆栈,“调用堆栈”和“线程堆栈”是一样的。将其称为“线程堆栈”只是强调调用堆栈是特定于线程的

:

启动新线程时,Java虚拟机将为该线程创建一个新的Java堆栈。如前所述,Java堆栈将线程的状态存储在离散的帧中。Java虚拟机只直接在Java堆栈上执行两个操作:推送和弹出帧

线程当前正在执行的方法是线程的当前方法。当前方法的堆栈帧是当前帧。定义当前方法的类称为当前类,当前类的常量池称为当前常量池。在执行方法时,Java虚拟机跟踪当前类和当前常量池。当虚拟机遇到对存储在堆栈帧中的数据进行操作的指令时,它会对当前帧执行这些操作

当线程调用Java方法时,虚拟机将创建一个新框架并将其推送到线程的Java堆栈上。然后,此新帧将成为当前帧。当方法执行时,它使用框架来存储参数、局部变量、中间计算和其他数据


调用堆栈
是一种
堆栈数据结构
,用于存储有关计算机程序的活动子例程的信息

您所调用的
线程堆栈
是我假设的线程的私有堆栈

这两件事本质上是一样的。它们都是
堆栈数据结构

线程堆栈用于存储函数调用的位置,以便允许return语句返回到正确的位置

由于通常只有一个重要的调用堆栈,人们称之为堆栈

是有关堆栈的信息


是关于基于堆栈的内存分配的信息。

每个线程都有自己的堆栈,每个方法调用都使用该堆栈的一个新区域。这意味着当一个方法调用自身(递归)时,它将拥有一组新的局部变量。

FileWriter
抛出一个
IOException
时,运行时系统立即停止执行
try
块;正在执行的方法调用未完成。然后,运行时系统开始在方法调用堆栈的顶部搜索适当的异常处理程序。

在本例中,当发生
IOException
时,
FileWriter
构造函数位于调用堆栈的顶部。但是,
FileWriter
构造函数没有适当的异常处理程序,因此运行时系统会检查方法调用堆栈中的下一个方法--
writeList
方法。
writeList
方法有两个异常处理程序:一个用于
IOException
,另一个用于
IndexOutOfBoundsException

我一直认为它们是一样的。但我愿意让我的世界被其他观点打破。