-4

我有一个问题,可以说我有这样的代码:

public static void main(String[] args)
{
startMethod1();
startMethod2();
}

现在,如果 startMethod1 方法非常大并且需要很长时间来执行它,那么 startMethod2 会在 startMethod1 完成之前启动。如何让这些方法一一执行?

4

4 回答 4

10

startMethod2 在 startMethod1 完成之前启动。

这永远不会发生。startMethod1您可以启动仍然可以作为startmethod2启动运行的线程。除非来电,否则startMethod2无法开始startMethod1startMethod1startMethod2

如果您想等到 startmethod1 中的线程完成,您必须Thread.join()使用它们或使用ExecutorService.awaitTermination()

如何让这些方法一一执行?

就像您编写代码一样。

于 2012-07-17T14:15:19.873 回答
3

他们已经这样做了。您编写的方式在运行startMethod2之前不会开始startMethod1

于 2012-07-17T14:15:34.590 回答
1

如果您使用的是线程,那么请更改您的代码示例...但我假装您这样做了,因为您对另一个问题的评论表明您打算这样做;-)

你可以看看 wait() 和 notify()

调用wait()告诉当前线程挂起,notify()再次唤醒

于 2012-07-17T14:15:05.473 回答
0

我的猜测是您正在使用某种正在缓冲的消息记录 API,因此某些输出出现的时间比您预期的要晚得多。甚至可能直到程序结束才冲洗。因此,您会得到误导您的交错输出。

于 2012-07-17T14:18:52.230 回答