如果子进程正在运行,那么父进程将如何完成?

时间:2011-03-24 05:24:58

标签: java multithreading

我在实现线程时遇到了疑问,所以想在我取得进展之前将其清除。我有一个方法从新线程被调用,在下一行我有return语句。

  

方法(){

     

调用线程();

     

return statement;

     

}

这里发生了什么?我的意思是父进程在子进程之前完成吗?

3 个答案:

答案 0 :(得分:0)

  1. 你的“调用线程();”在java中是thread.start();
  2. 所有线程都在同一个java进程中运行
  3. 不,在返回语句发生之前,线程不需要完成。

答案 1 :(得分:0)

请看这篇文章

make-parent-thread-wait-till-child-thread-completes-or-timeout

您需要使用join方法。在父完成之前,您必须等待子线程完成。

答案 2 :(得分:0)

您似乎对线程和进程的概念感到困惑。 Java程序在Java虚拟机中运行。此JVM是一个进程(可在您的操作系统的任务管理器中查看)。流程可以“包含”多个流程。有关这方面的更多信息,请参阅this SO question that discusses the differences

要回到您的问题,您的代码会生成一个新线程并返回。线程的实际作用与调用方法无关。您询问父进程是否在子进程之前完成?那取决于。新线程有什么作用?如果它非常快,那么也许不是。它们“并行”运行,这就是我们首先使用线程的原因。所以你不应该把你的逻辑基于先完成的事情。

你打电话给你的朋友并要求他照顾好某事的形象。你打电话给他后,你继续做其他事情。电话已经成功,你继续你的一天。你的朋友是你的新线程。也许你想稍后检查一切是否正常,但你不会在他照顾它时等待电话。不使用线程就是这种情况。

如果您认真对待Java并发,我强烈推荐Java Concurrency In Practice