为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2021-08-13 17:03:50
假设你有以下方法 MyClasspublic 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()这不会返回任何内容。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

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

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

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


查看完整回答
反对 回复 2021-08-13
?
呼如林

TA贡献1798条经验 获得超3个赞

它会等到doSomeWork完成。

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


查看完整回答
反对 回复 2021-08-13
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信