栈与栈帧

我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。

通过 IDEA 的 Debug 工具可以看到栈帧:

Untitled

线程的上下文切换

因为以下一些原因导致 CPU 不再执行当前的线程,转而执行另一个线程的代码

线程上下文切换的时候,通过程序计数器来保存当前线程的状态,并回复另一个线程的状态

线程上下文切换的频繁发生会影响性能

Java 线程的几种状态

操作系统定义的线程有五种状态,但 Java Thread 类中以枚举的方式定义了六种状态。

tmp488A.png

Untitled

情况 1 NEW --> RUNNABLE

情况 2 RUNNABLE <--> WAITING