问题描述
|
我知道每个线程都将拥有它自己的堆栈,这是否意味着每个方法也将拥有它自己的线程?
解决方法
不,每个方法在当前线程的堆栈中都有自己的堆栈框架。
因此,如果您有两个线程,一个线程调用method1()调用method2(),另一个线程调用methodA()调用methodB()又调用methodC(),您将得到:
Stack 1 Stack2
methodC()
method2() methodB()
method1() methodA()
请注意,尾部递归也有可能,它允许递归调用替换当前的堆栈框架,而不是创建新的堆栈框架。
, 我没有,这也是在递归进行得太深的情况下可能出现StackOverflowError的原因。