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

sti*_*ows 3 java oop execution

假设你有以下方法 MyClass

public class MyClas{
  public void startWork(){
    YourClass.doSomeWork();
    //more things to do in this method
  }
}
Run Code Online (Sandbox Code Playgroud)

和YourClass看起来像这样:

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

现在我想知道是在代码YourClass.doSomeWork();中执行的startWork()方法,将脚本继续下一行相同的方法,或者等到doSomeWork()在YourClass完成它的执行?

请注意,doSomeWork()不会返回任何内容.

Gho*_*ica 7

大多数语言中的默认语义,特别是Java中的默认语义当然是代码按顺序执行.

含义:除非您执行其他操作,例如将任务提交到ExecutorService(或创建Thread对象并调用其start()方法),当然外部方法将按顺序执行所有调用,并且每个内部调用都需要在下一个被执行.

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


孙兴斌*_*孙兴斌 5

它会等到doSomeWork完成。

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