猿问

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

假设你有以下方法 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()inYourClass完成它的执行?


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


www说
浏览 167回答 2
2回答

桃花长相依

大多数语言(尤其是 Java)中的默认语义当然是代码按顺序执行。意思是:除非你做了额外的事情,比如提交一个任务到一个ExecutorService(或者创建一个Thread对象并调用它的start()方法),那么当然外层方法会依次执行所有调用,并且每次内部调用都需要在下一个被执行。换句话说:除非您在源代码中使用特定的构造,否则事情将由单个线程按照您放入代码的确切顺序执行。是的,事情可能会变得更加复杂,因为指令可以在各个级别重新排序,但是 Java 内存模型的这些方面与此处提出的基本问题无关)。

呼如林

它会等到doSomeWork完成。如果你想doSomeWork异步调用并且下一个过程startWork不依赖于 的结果doSomeWork,你可以使用一些并发框架,例如Executor。
随时随地看视频慕课网APP

相关分类

Java
我要回答