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的核数

JUC并发编程 多线程设计模式 -- 同步模式之保护性暂停(join方法原理 & 保护性暂停-扩展-解耦等待和生产)

JUC并发编程 多线程设计模式 -- 同步模式之顺序控制( 固定运行顺序 & 交替输出)