【问题标题】:Why only one method at a time can be active within each thread running in JVM?为什么在 JVM 中运行的每个线程中一次只能激活一个方法?
【发布时间】:2011-11-27 19:28:18
【问题描述】:

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

【问题讨论】:

  • 因为如果它可以同时运行两个东西,它们就会被称为两个线程。
  • 听起来很哲学……
  • 看起来像一个新的操作系统设计:)。

标签: java multithreading jvm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    每个线程同步运行代码。只有在完成当前的工作分配后,才会给线程分配更多的工作。

    至于为什么一次只能有一个方法'active',一个方法可以调用其他方法或返回。一旦一个方法返回,它显然就不再是活跃的,同样,一旦一个方法调用另一个,被调用的方法就成为活跃的。

    【讨论】:

      【解决方案3】:

      线程存在的全部原因是您可以同时执行多个事情。每个线程都有自己的堆栈和程序计数器,因此它在任何时候都只能位于代码中的一个位置。

      【讨论】:

      • 所以,主要原因是每个线程只能有一个程序计数器?
      • @zum:程序计数器是原因之一。另一个是线程有自己的内存扇区。
      【解决方案4】:

      通过每个时钟周期的多条指令、方法内联、CPU 流水线和指令重新排序,单个线程可以同时执行来自多个方法的指令,但是只有在您看不到任何差异时才应该这样做。即,我们的想法是在不改变行为的情况下提高性能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 2017-10-08
        相关资源
        最近更新 更多