【发布时间】:2014-03-29 20:24:26
【问题描述】:
我想知道 Java 的 main 方法是否是一个线程。我注意到如果 main 方法返回,所有线程都会被杀死。你能解释一下为什么会这样吗? 提前谢谢你。
【问题讨论】:
-
“如果主方法返回,所有线程都被杀死”......我没有观察到这种行为。
标签: java multithreading main
我想知道 Java 的 main 方法是否是一个线程。我注意到如果 main 方法返回,所有线程都会被杀死。你能解释一下为什么会这样吗? 提前谢谢你。
【问题讨论】:
标签: java multithreading main
其实 main 方法是在主线程上运行的! main threads invokes your main()
java 应用程序的所有其他线程都是从这个线程产生的!
【讨论】:
当您启动应用程序时,操作系统会为您创建一个线程,它是主线程(或其他上下文中的 UI 线程)。
这个线程只是运行你的main 方法并停止。
无论如何,有两种类型的线程。
main thread 是 User thread。
当所有用户线程完成后,JVM 将停止。
嗯,这只是一个“快速响应”,我很喜欢你可以在这里找到专家更好的答案。
【讨论】:
是的,main 方法在主线程上运行。但它仍然像任何其他用户线程一样。
当所有其他用户线程停止运行时,也有守护线程停止。
主线程还负责产生程序员在其程序中创建的其他线程,这些线程又可以产生其他线程等等。
并不是说当 main 方法返回时,所有线程都会被杀死。一个原因可能是因为 main 是一个 void 方法,它不能返回任何东西。 :D
但把双关语放在一边,如果你产生一个或多个运行很长时间的用户线程,并且你没有在 main 方法中使用 join() 方法,那么即使 main 方法结束,其他线程仍然运行,如果他们的 run() 方法没有停止执行。
【讨论】: