当您在其中调用另一个方法时,方法的执行流程是否等待?

Does the execution flow of a method wait when you call another method within it?

假设您在 MyClass

中有以下方法
public class MyClas{
  public void startWork(){
    YourClass.doSomeWork();
    //more things to do in this method
  }
}

YourClass 看起来像这样:

public class YourClass{
  public static void doSomeWork(){
    // a lot of work to do here
    // maybe even invoke other methods in some other classes
  }
}

现在我想知道的是当代码YourClass.doSomeWork();startWork()方法中执行时,脚本会继续以相同的方法执行下一行还是等到doSomeWork()YourClass 执行完毕?

请注意 doSomeWork() 没有 return 任何东西。

大多数语言中的默认语义,尤其是Java中的语义当然是代码按顺序执行。

意思:除非你做了额外的事情,比如提交一个任务到一个ExecutorService(或者创建一个Thread对象并调用它的start()方法),那么当然一个外部方法会依次执行所有调用,每个内部调用都需要在下一个执行之前完成。

换句话说:除非您在源代码中使用特定的结构,否则事情将由单个线程按照您在代码中输入的确切顺序执行。是的,事情可能会变得更复杂,因为指令可以在不同级别重新排序,但 Java 内存模型的这些方面与此处提出的基本问题无关。

它将等到 doSomeWork 完成。

如果你想异步调用doSomeWork并且startWork的下一个过程不依赖于doSomeWork的结果,你可以使用一些并发框架,例如, Executor