守护线程与用户线程

一、守护线程(Daemon Thread)

        为用户线程提供便利服务的线程就是守护线程,比如JVM中的垃圾回收器就是一种守护线程。守护线程不止是有JVM自行创建的线程,程序员也可以通过setDaemon(true)的方式,将用户线程转化为守护线程。当然,既然守护线程的唯一作用是为用户线程提供便利服务,所以当程序中仅存在守护线程时,守护线程就没有存在的必要了,JVM会关闭剩下的守护线程并且推出该进程。

二、用户线程(User Thread)

        所谓的用户线程就是我们平时建议的有着自己专门作用的线程,也就是非守护线程。我们常见的main方法也同样是用户线程的一员。

public class DaemonThreadTest {
    public static void main(String[]args){
        Thread t = new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        try {
                            while (true)
                                System.out.println("这是守护线程");
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                }
        );
        //
        t.setDaemon(true);
        t.start();
        System.out.println(t.isAlive());
    }
}

通过这段代码的执行,我们可以发现守护线程只能为线程提供服务,无法做输入输出操作。

posted @ 2019-04-01 17:38  千千万花世界  阅读(328)  评论(0编辑  收藏  举报