为什么在JVM中运行的每个线程中一次只能激活一个方法?

问题描述:

有人可以解释为什么在JVM中运行的每个线程中,一次只能有一个方法是活动的?为什么不是两三个,但只有一个?为什么在JVM中运行的每个线程中一次只能激活一个方法?

+10

因为如果它一次可以运行两件事情,它们会被称为两个线程。 –

+2

听起来像哲学的东西... –

+0

看起来像一个新的操作系统设计:)。 – Akshat

每个线程同步运行代码。一旦线程完成了当前的工作分配,线程只会得到更多的工作。至于为什么一次只能有一个“活动”方法,一个方法可以调用其他方法或返回。一旦方法返回,它显然不再处于活动状态,类似地,一旦方法调用另一个方法,被调用的方法就变为活动方法。

根据定义,线程是按顺序执行代码的东西。所以没有办法在一个线程中执行多个方法。如果要并行执行两个或多个方法,请使用多个线程。您可能需要查看Java concurrency tutorial以了解线程的基本知识。

线程完全存在的原因是您可以同时执行多个事情。每个线程都有自己的堆栈和程序计数器,因此它可以随时在代码中只有一个地方。

+0

所以,主要原因是每个线程只能有一个程序计数器? – almas

+0

@zum:程序计数器是一个原因。另一个是线程拥有自己的内存部分。 – mort

每个时钟周期有多条指令,方法内联,CPU流水线和指令重新排序,一个线程可以同时执行来自多个方法的指令,但只有在没有差别时才应该这样做。即想法是在不改变行为的情况下提高绩效。