【问题标题】:Threads: How do I know which thread a method runs in?线程:我如何知道方法在哪个线程中运行?
【发布时间】:2014-02-08 16:26:04
【问题描述】:

在 Java 中:

我有一个线程在 Xclass 类中开始运行。该线程从类Yclass调用方法a(),方法a()从类b()调用方法b()

b() 肯定与a() 在同一个线程中运行吗?

【问题讨论】:

  • 没有方法调用会神奇地跳转到另一个线程。这实际上很难做到,并且有一些库可以让它看起来正在发生,但实际上它正在做很多聪明的工作来实现这一点。

标签: java multithreading class methods


【解决方案1】:

除非您在途中启动任何其他线程,否则调用/调用方法将永远不会在新线程中启动。

可以通过打印当前正在执行的线程名称的输出来进行简单的检查:

System.out.println(Thread.currentThread().getName());

如果你考虑一下,如果方法的顺序调用具有自动启动新线程的能力,它就会产生多个顺序方法同时运行的可能性。这将是非常不合逻辑的,因为可能会出现其中一个正在运行的方法为另一个生成参数的情况,另一个如何在前一个方法未完成执行的情况下启动。

【讨论】:

    【解决方案2】:

    当你启动一个新线程时(通过调用th.start()),JVM 会创建一个
    新的执行线程并调用th.run() 方法。然后想象
    run() 调用 A 调用 B 调用 C 调用 D 等(A、B、C、D 等都是方法)。
    所有这些方法 A、B、C、D 都在同一个线程中执行
    (你调用的那个 start on)。

    您可以随时致电Thread.currentThread().getName()runABCD 等任何一个)
    获取您启动的th 线程的名称。在开始th之前,您可以
    为其命名(通过调用th.setName())。我想这回答了你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多