我遇到了问题,让我说我有这样的代码:
public static void main(String[] args)
{
startMethod1();
startMethod2();
}
现在,如果startMethod1方法非常大并且需要花费大量时间来执行它,则在startMethod1完成之前启动startMethod2。 如何让这些方法逐个执行?
答案 0 :(得分:10)
startMethod2在startMethod1完成之前启动。
这绝不会发生。您可以在startMethod1
中启动可能仍在startmethod2
启动时运行的线程。除非startMethod2
调用startMethod1
startMethod1
无法在startMethod2
之前启动
如果你想等到startmethod1中的线程结束,你必须Thread.join()
他们或使用ExecutorService.awaitTermination()
如何让这些方法逐一执行?
就像你编写代码一样。
答案 1 :(得分:3)
他们已经做到了。您编写它的方式startMethod2
将在startMethod1
运行后才会开始。
答案 2 :(得分:1)
如果您正在使用线程,那么请更改您的代码示例...但我假装您这样做了,因为您对另一个问题的评论显示您的意图; - )
您可以查看wait()和notify()
调用wait()告诉当前Thread挂起,并通知()再将其唤醒
答案 3 :(得分:0)
我的猜测是你正在使用某种缓冲的消息记录API,因此某些输出的出现时间比你预期的要晚得多。甚至可能在程序结束前都没有冲洗。因此,您将获得交错输出,这会误导您。