什么是线程栈?它的作用是什么?代码举例讲解

线程栈(Thread Stack)是线程运行时所占用的栈内存,它存储线程中方法调用的栈帧信息。每个线程启动后,虚拟机会为其创建一个线程栈。

线程栈的作用是:

  1. 存储线程中方法执行的栈帧,每个方法调用对应一个栈帧。
  2. 实现线程之间的方法调用信息隔离,每个线程有自己的线程栈。
  3. 简化线程中方法的调用与返回过程,自动管理栈帧的生成和销毁。
  4. 线程结束时,对应线程栈被销毁,不需要手动内存管理。

来看一个简单示例:

public void method1() {
    int a = 10;
    method2();
}

public void method2() {
    int b = 20; 
}

public static void main(String[] args) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            StackFrameDemo demo = new StackFrameDemo();
            demo.method1();
        }
    }).start();
}  

在该示例中:

  1. main线程启动一个新线程,为其创建线程栈。
  2. 新线程调用method1,在线程栈中为其创建一个栈帧。
  3. method1调用method2,在线程栈中为其创建一个栈帧。
  4. method2执行结束,其栈帧被 thread栈销毁。method1继续执行。
  5. method1执行结束,其栈帧被线程栈销毁。线程结束,线程栈被销毁。