栈是先进后出,也就是压栈 , 如果公用同一块栈空间 有的1线程先把方法A压入最下面, 2线程将方法BCD 同时压入栈空间,1线程执行完后想要释放方法A,那么 势必会影响到2线程的BCD方法。所以 每次进来一个线程都会分配一块栈空间,用来存放临时变量,引用
例子
package jvm;
/**
* @author WeiChuanBao
* @date 2022/8/28 13:06
*/
public class _03_stack {
public static void main(String[] args) {
new Thread(() -> {
dome();
}, "wei").start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dome();
}
static void dome() {
dome2();
}
static int dome2() {
return 0;
}
}
当main方法调用执行到dome2方法的时候 可以看到 栈空间内 main方法和dome方法已经被压入栈中
两个线程都有自己独立的栈空间,两个线程都不相互影响