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