守护线程与用户线程

守护线程 Daemon Thread

依赋于用户线程,如果JVM 中存在一个或一个以上的非守护线程,那么该线程就不会被结束。

  Thread dameonThread = new Thread();
  dameonThread.setDaemon(true); 
用户线程 User Thread

与守护线程不同的是,该线程在代码结束完后就会被回收。

测试代码
守护线程
Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("child thread begin running");
                try {
                    Thread.sleep(60 * 1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        thread.setDaemon(true);
        thread.start();
        Thread.sleep(1000);
       
守护线程会在非守护进程结束后马上结束

1575293298010-1575469277419.png

1S 后

1575293319393.png

用户线程
Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("child thread begin running");
                try {
                    Thread.sleep(60 * 1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        thread.setDaemon(false);
        thread.start();
        Thread.sleep(1000);
       
运行后

1575294512051.png

30S 后 线程依旧存在

1575294531429.png


eggache
4 声望0 粉丝

« 上一篇
FastJson Feature
下一篇 »
线程状态