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