daemon thread存在的价值就是在后台为它的前台线程提供“通用性服务”。它有一个主要特性:它不属于程序的本体。如果在main线程中你调用了用户线程,并且用户线程未在卖弄线程之前中止,那么即使main线程死了,程序也会继续运行下去。因为只有等所有的用户线程中止后,程序才能停止。
可daemon不同,由于它不是程序的本体,你可以把它理解为程序主体的寄生物,默默的在后面关注main线程,当main线程停止时,它自然也无法存在,消亡了。呵呵,这么说不知道还清不清楚?只是我个人理解,不知道是不是完全正确。欢迎板砖~~~

解决方案 »

  1.   

    守护线程在很多方面都和用户线程一样,有优先级,有相同的方法,通过同样的状态转换.在程序运行过程中,Daemon和用户线程的行为是一样.当一个用户线程结束过后,JVM才检察系统中的线程是否是Daemon,如果是用户线程,则继续调度,如果仅剩下Daemon,JVM就会退出,程序也会中止.比较典型的守护线程是GC线程.
    不过,用户线程和Daemon之间的区别的确不是很清晰,虽然一般而言,Daemon是用来对用户线程提供服务的,但Daemon完成这种关键服务的时间有可能比提出要求的用户线程的生命期要长.
      

  2.   

    所谓 daemon线程,就是一种“在背景提供通用性服务”的线程,它并不属于程序本体。因此,当所有non-daemon线程结束生命,程序也就终止了。如果有任何non-daemon线程还在执行,程序(也就是main()的那个线程)就不能终止。
      

  3.   

    很少有在程序中用到的时候,GC的线程就是一个Daemon的例子
      

  4.   

    不好意思, star821116(冰冻三尺非一日之寒)  本人菜鸟,GC的线程是什么???
      

  5.   

    知道了,GC的线程 --Garbage Collector,谢过各位