java多线程为什么每个线程都有一个单独的栈 ?

这目录


我们都知道 在jvm底层, 每个线程都有对应的一个栈, 那么为什么不是所有线程公用一个栈呢?

分析一下原因

环境 : 现在有两个线程 , 线程1和线程2, 有4个函数A(), B(), C() D(); 线程1执行A(), B()
线程2执行C(), D()

然我们看一下, 在程序执行时发生线程切换, 如果公用一个栈会有什么问题

在这里插入图片描述
在这里插入图片描述

为了避免以上事情发生, 因此每个线程要对应自己的一个栈, 用来存储自己线程的信息


版权声明:本文为hc1428090104原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。