首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教:main()是守候线程吗

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

请问: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()不是守护线程,
但是,还有点不清楚:
如果一个线程创建了另外一个线程,暂且称为子线程吧
那么子线程结束前,创建它的父线程不会退出
==========================================
如果,父线程结束,就出现,了死锁了。

热点排行