日期:2014-05-20  浏览次数:21210 次

请问:main()是守候线程吗?
请问各位大侠,main()是守候线程吗?若在main()中激发一个线程,那么在main()会在那个线程结束之前结束吗?

------解决方案--------------------
main()不是守候线程,
守护线程是那些仅提供辅助功能的线程。Java 程序将运行到所有用户线程终止,然后它将破坏所有的守护线程。在 Java 虚拟机 (JVM) 中,即使在 main 结束以后,如果另一个用户线程仍在运行,则程序仍然可以继续运行。

------解决方案--------------------
main不是一个守护线程,但默认情况下,main是non-daemon的,于是它所创建的线程默认也都是non-daemon的,除非你通过setDaemon设置过。
只有所有的non-daemon线程都终止了,程序才会终止。
------解决方案--------------------
main线程不是守护线程
但是为什么执行完了之后却要等到别的线程都结束了才能结束呢?

这里其实是设计到另外一个问题
如果一个线程创建了另外一个线程,暂且称为子线程吧
那么子线程结束前,创建它的父线程不会退出
------解决方案--------------------
main()不是守候线程,
================================
回复人:zhangtianguang() ( 一级(初级)) 信誉:100 2007-03-28 09:12:02 得分:0
?
谢谢大家,现在我知道了main()不是守护线程,
但是,还有点不清楚:
如果一个线程创建了另外一个线程,暂且称为子线程吧
那么子线程结束前,创建它的父线程不会退出
==========================================
如果,父线程结束,就出现,了死锁了。