JUC并发编程 线程运行原理 -- 栈帧 & 栈帧图解
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUC并发编程 线程运行原理 -- 栈帧 & 栈帧图解相关的知识,希望对你有一定的参考价值。
1. 线程(栈)运行原理
栈与栈帧:
Java Virtual Machine Stacks (Java 虚拟机栈)
我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。
- 每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存
- 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
示例代码:
public class TestFrames {
public static void main(String[] args) {
method1(10);
}
private static void method1(int x) {
Object m = method2();
System.out.println("x = " + x);
System.out.println("m = " + m);
}
private static Object method2() {
return new Object();
}
}
运行结果: 我们以debug的形式调用
- 当主方法的栈内存释放后,JVM就会结束整个代码的执行
2. 栈帧图解
入栈:
出栈:
以上是关于JUC并发编程 线程运行原理 -- 栈帧 & 栈帧图解的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 -- park & unpark 基本使用及原理
JUC并发编程 -- 观察线程运行的现象 & 查看进程线程的方法
JUC并发编程 -- 创建线程的3种方式详解 & 原理之Thread 与 Runnable 的关系
JUC并发编程 -- JUC介绍 & 线程/进程 & 并发/并行 & Java代码查看CPU的核数