我记得C++中是当主线程结束时,它产生的子进程也随之结束!
java中主线程结束了,好象子进程还在运行?为什么要这样设计呢?
如果子进程要用到主进程中的资源呢,而主进程已经结束会怎么样呢?

解决方案 »

  1.   

    不好意思,错了几个关键字.是线程不是进程,嘿嘿!我记得C++中是当主线程结束时,它产生的子线程也随之结束!
    java中主线程结束了,好象子线程还在运行?为什么要这样设计呢?
    如果子线程要用到主线程中的资源呢,而主线程已经结束会怎么样呢?
      

  2.   

    1。可以用setDaemon(true),让主线程结束的时候子线程也结束
    2。在子线程中设置标志,主线程用这个标志来控制子线程结束
    3。主线程结束,并不代表主线程资源被释放,如果子线程引用了主线程的资源,可以继续使用。
      

  3.   

    我记得C++中是当主线程结束时,它产生的子进程也随之结束!
    这个好像不一定吧?你要看你在什么操作系统,UNIX里面好像就不是这样!java中主线程结束了,好象子进程还在运行?为什么要这样设计呢?不同的操作系统(哈哈,认为JVM也是一个操作系统),不同的考虑点!
      

  4.   

    对 westarea(彩色的草原) 的第一点补充一下.1。可以用setDaemon(true),让主线程结束的时候子线程也结束所谓"守护线程(daemon thread)"是指,只要程序还在运行,它就应该在后台提供某种公共服务的线程,但是守护线程不属于程序的核心部分。因此,当所有非守护线程都运行结束的时候,程序也结束了。相反,只要还有非守护线程在运行,程序就不能结束。比如,运行main( )的线程就属于非守护线程。比如说, 现在在主线程中起了两个线程t1和t2, t1.setDaemon(true),然后主线程挂了, 但是这时只要t2还在运行, t1也不会挂!只有当t2也挂了, t1这支daemon线程才会挂!
      

  5.   

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