【发布时间】:2011-11-27 19:28:18
【问题描述】:
有人能解释一下为什么在 JVM 中运行的每个线程中一次只能激活一个方法吗?为什么不是两三个,而是只有一个?
【问题讨论】:
-
因为如果它可以同时运行两个东西,它们就会被称为两个线程。
-
听起来很哲学……
-
看起来像一个新的操作系统设计:)。
标签: java multithreading jvm
有人能解释一下为什么在 JVM 中运行的每个线程中一次只能激活一个方法吗?为什么不是两三个,而是只有一个?
【问题讨论】:
标签: java multithreading jvm
根据定义,线程是按顺序执行代码的东西。所以没有办法在一个线程中执行一个以上的方法。如果要并行执行两个或多个方法,请使用多个线程。您可能想查看Java concurrency tutorial 以了解线程的基础知识。
【讨论】:
每个线程同步运行代码。只有在完成当前的工作分配后,才会给线程分配更多的工作。
至于为什么一次只能有一个方法'active',一个方法可以调用其他方法或返回。一旦一个方法返回,它显然就不再是活跃的,同样,一旦一个方法调用另一个,被调用的方法就成为活跃的。
【讨论】:
线程存在的全部原因是您可以同时执行多个事情。每个线程都有自己的堆栈和程序计数器,因此它在任何时候都只能位于代码中的一个位置。
【讨论】:
通过每个时钟周期的多条指令、方法内联、CPU 流水线和指令重新排序,单个线程可以同时执行来自多个方法的指令,但是只有在您看不到任何差异时才应该这样做。即,我们的想法是在不改变行为的情况下提高性能。
【讨论】: