A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 左脑想你 中级黑马   /  2014-8-18 17:41  /  1156 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前台线程结束进程就结束,也就是说进程结束与否只与前台线程有关,那后台线程是干啥的?进程都结束了他还运行干嘛?它不是进程的一部分?
或者程序与进程之间的关系我理解有误?望指点迷津

3 个回复

倒序浏览
本帖最后由 怀念黑海岸 于 2014-8-18 18:22 编辑

先抢沙发,再慢慢回答:
      java中有两类线程,第一种叫用户线程,是用来处理用户程序的。第二种叫守护线程,是专门为用户线程来服务的。最常见的就是执行gc任务(垃圾回收)的线程。如果当前用户线程执行完毕了的话,那么守护线程就没有必要继续存在下去了,jvm就退出。我们也可以在程序开始之前定义自己的守护线程,使用setDaemon(true)方法,但是这个设置的过程必须在调用当前线程的start方法之前。否则出现线程状态异常IllegalThreadStateException。
     因为java虚拟机退出的判断条件是用户线程是否运行完毕,所以在使用守护线程时不建议给守护线程增加额外的任务,因为你不能确定守护线程是否已经在用户线程运行完毕之前完成你交予他的任务,如果没有完成就让jvm就已退出了的话对于程序来说是个灾难。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马