【发布时间】:2017-04-01 16:17:56
【问题描述】:
我试图理解这句话的意思:
每个 Java 虚拟机线程都有自己的 pc(程序计数器) 登记。在任何时候,每个 Java 虚拟机线程都在执行 单个方法的代码,即当前方法(第 2.6 节) 线程。
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1
我假设 JVM 线程像任何其他线程一样工作 - 每次该线程被安排运行(比如 Linux 内核)时,它的“程序计数器”都会从它的 task_struct data structure 加载,所以从 CPU 的角度来看,只有一个程序计数器 - 每次操作系统切换线程时它都会被操作系统更新。
正确吗?我很困惑,因为整个页面似乎一直在强调每个 JVM 都有自己的 PC/堆栈/堆等,但我认为这是任何进程的给定 - JVM 在某种程度上不同于其他进程吗?
【问题讨论】:
-
好吧,您错误地引用了标题中的摘录:“每个 Java 虚拟机 线程 都有自己的 pc”。然后“JVM 线程像任何其他线程一样工作”。
-
你是对的 - 这种区别是我困惑的一部分。
标签: java multithreading process linux-kernel jvm