线程1 - main()
程序计数器 (PC)
0
指向字节码行号
0
iconst_1 // 将常量1压入栈
1
istore_1 // 存储到变量1
2
iconst_2 // 将常量2压入栈
3
istore_2 // 存储到变量2
4
iload_1 // 加载变量1
5
iload_2 // 加载变量2
6
iadd // 相加
7
istore_3 // 存储结果
8
return // 返回
线程2 - calculate()
程序计数器 (PC)
0
指向字节码行号
0
iconst_5 // 将常量5压入栈
1
istore_1 // 存储到变量1
2
iload_1 // 加载变量1
3
iconst_1 // 将常量1压入栈
4
iadd // 相加
5
istore_1 // 存储结果
6
return // 返回
当前状态: 准备执行 - 程序计数器指向第一条指令
💡 程序计数器关键概念
- 线程私有:每个线程都有独立的程序计数器,互不干扰
- 指令地址:保存当前执行的字节码指令的地址(行号)
- 执行控制:CPU通过程序计数器知道下一条要执行的指令
- 线程切换:当线程切换时,程序计数器保存当前执行位置
- 异常安全:唯一不会发生OutOfMemoryError的内存区域
- 本地方法:执行native方法时,程序计数器值为undefined