据我所知,每个线程都有自己的堆栈,这是否意味着每个方法都有自己的线程?
答案 0 :(得分:6)
不,每个方法在当前线程的堆栈中都有自己的堆栈 frame 。
因此,如果你有两个线程,一个调用method2()调用method2(),另一个调用methodA()调用methodB()调用methodC(),你最终会得到:
Stack 1 Stack2
methodC()
method2() methodB()
method1() methodA()
请注意,还有tail recursion允许递归调用替换当前堆栈帧而不是创建新堆栈的可能性。
答案 1 :(得分:0)
我没有,这也是为什么在你的递归太深的情况下你可能得到StackOverflowError的原因。