JVM内的守护线程Deamon与用户线程User Thread

JVM内的守护线程Deamon与用户线程User Thread

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561771.html 

    一:守护线程Daemon

    守护线程:Daemon在希腊神话中解作“守护神”,顾名思义就是一直在JVM后台中运行着,为其他线程(用户线程)服务的。例如:垃圾回收线程GC线程就是守护线程。

    守护线程的生命周期:随着程序在JVM中运行,守护线程第一时间被启动,并且一直处于运行态。

                                当所有用户线程都执行完毕后,程序就会杀死守护线程,离开JVM,终止程序。

    二:用户线程转化为守护线程

     守护线程可以由用户线程转化而来,成为当前程序的守护线程之一运行到程序退出。

     我们可以调用用户线程对象的setDaemon(true)方法来将其转化为守护进程,然后启动它,它将持续运行到程序退出。

     在将用户线程转化为守护线程时要注意:

    (1) thread.setDaemon(true)必须在thread.start()之前设置,不能把正在运行的用户线程设置为守护线程。 

    (2) 在Daemon线程中产生的新线程也是Daemon的。

    (3) 守护线程不能用来进行JVM中文件、数据库的读写或者进行计算任务,因为当所以用户线程完成后程序会强行杀死所以守护线程,而若在守护线程中进行读写或计算的话有可能因为程序的退出而导致操作不能完成。