为什么主线程结束,子线程不结束呢?

liuwencoding 2005-10-22 10:47:00
我记得C++中是当主线程结束时,它产生的子进程也随之结束!
java中主线程结束了,好象子进程还在运行?为什么要这样设计呢?
如果子进程要用到主进程中的资源呢,而主进程已经结束会怎么样呢?
...全文
780 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgysc 2005-10-24
  • 打赏
  • 举报
回复
setDaemon(true) 可以让主线程结束的时候子线程也结束
interhanchi 2005-10-22
  • 打赏
  • 举报
回复
我记得C++中是当主线程结束时,它产生的子进程也随之结束!


这个好像不一定吧?你要看你在什么操作系统,UNIX里面好像就不是这样!

java中主线程结束了,好象子进程还在运行?为什么要这样设计呢?

不同的操作系统(哈哈,认为JVM也是一个操作系统),不同的考虑点!
诗海 2005-10-22
  • 打赏
  • 举报
回复
1。可以用setDaemon(true),让主线程结束的时候子线程也结束
2。在子线程中设置标志,主线程用这个标志来控制子线程结束
3。主线程结束,并不代表主线程资源被释放,如果子线程引用了主线程的资源,可以继续使用。
shine333 2005-10-22
  • 打赏
  • 举报
回复
确实如此

〉如果子线程要用到主线程中的资源呢,而主线程已经结束会怎么样呢?

主线程运行结束不代表主线程的资源也不能访问了啊
liuwencoding 2005-10-22
  • 打赏
  • 举报
回复
不好意思,错了几个关键字.是线程不是进程,嘿嘿!

我记得C++中是当主线程结束时,它产生的子线程也随之结束!
java中主线程结束了,好象子线程还在运行?为什么要这样设计呢?
如果子线程要用到主线程中的资源呢,而主线程已经结束会怎么样呢?
schol 2005-10-22
  • 打赏
  • 举报
回复
...study
hfree 2005-10-22
  • 打赏
  • 举报
回复
对 westarea(彩色的草原) 的第一点补充一下.

1。可以用setDaemon(true),让主线程结束的时候子线程也结束

所谓"守护线程(daemon thread)"是指,只要程序还在运行,它就应该在后台提供某种公共服务的线程,但是守护线程不属于程序的核心部分。因此,当所有非守护线程都运行结束的时候,程序也结束了。相反,只要还有非守护线程在运行,程序就不能结束。比如,运行main( )的线程就属于非守护线程。

比如说, 现在在主线程中起了两个线程t1和t2, t1.setDaemon(true),然后主线程挂了, 但是这时只要t2还在运行, t1也不会挂!只有当t2也挂了, t1这支daemon线程才会挂!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧