在递归java方法中,每个方法调用都会导致新的堆栈吗?

问题描述

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

解决方法

        不,每个方法在当前线程的堆栈中都有自己的堆栈框架。 因此,如果您有两个线程,一个线程调用method1()调用method2(),另一个线程调用methodA()调用methodB()又调用methodC(),您将得到:
Stack 1                    Stack2

                           methodC()
method2()                  methodB()
method1()                  methodA()
请注意,尾部递归也有可能,它允许递归调用替换当前的堆栈框架,而不是创建新的堆栈框架。     ,        我没有,这也是在递归进行得太深的情况下可能出现StackOverflowError的原因。