java - 在递归java方法中,每个方法调用都会产生一个新的堆栈吗?

标签 java multithreading

我知道每个线程都有自己的堆栈,那么这是否意味着每个方法也有自己的线程?

最佳答案

不,每个方法在当前线程的堆栈中都有自己的堆栈框架

因此,如果您有两个线程,一个调用 method1() 并调用 method2(),另一个调用 methodA(),后者调用 methodB(),后者又调用 methodC(),那么您最终会得到:

Stack 1                    Stack2

                           methodC()
method2()                  methodB()
method1()                  methodA()

请注意,也有可能 tail recursion它允许递归调用替换当前堆栈帧,而不是创建新堆栈帧。

关于java - 在递归java方法中,每个方法调用都会产生一个新的堆栈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173600/

相关文章:

java - 在java中并行处理数组

python - 如何对 python 进程进行单元测试

java - GUI + 多线程支持 + 正则表达式支持。哪种语言? Java/Python/ ruby ?

java - 多线程生产者/消费者同步问题

java - 具有多个屏幕的 Android 应用程序

java - 尝试使用种子值生成随机字符来测试程序。以及将随机生成的 int 转换为 char

java - 在 Web 应用程序中使用 ThreadPoolExecutor

java - 读取文件并将数据从文件发送到 JTable

尝试从 selenium webdriver 中的 cookies 读取数据时出现 java.lang.IllegalArgumentException

根据命名约定,带有 "has"前缀的 Java boolean setter