多线程之守护线程

Java中有两种线程,一种是用户线程,另一种是守护线程。

1、用户线程

用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止

public class Demo4Daemon {
  public static void main(String[] args) {
    Thread thread = new Thread(new Runnable() {
      public void run() {
        for (int i = 0; i < 10; i++) {
          try {
            Thread.sleep(10);
         } catch (Exception e) {
         }
          System.out.println("子线程..." + i);
       }
     }
   });
    thread.start();
    for (int i = 0; i < 5; i++) {
      try {
        Thread.sleep(10);
        System.out.println("主线程" + i);
     } catch (Exception e) {
     }
   }
    System.out.println("主线程执行完毕!");
 }
}

结果如下:

主线程0
子线程...0
子线程...1
主线程1
主线程2
子线程...2
主线程3
子线程...3
主线程4
子线程...4
主线程执行完毕!
子线程...5
子线程...6
子线程...7
子线程...8
子线程...9

2、守护线程

守护线程当进程不存在或主线程停止,守护线程也会被停止

public class Demo4Daemon {
  public static void main(String[] args) {
    Thread thread = new Thread(new Runnable() {
      public void run() {
        for (int i = 0; i < 10; i++) {
          try {
            Thread.sleep(10);
         } catch (Exception e) {
         }
          System.out.println("子线程..." + i);
       }
     }
   });
    // 设置线程为守护线程
    thread.setDaemon(true);
    thread.start();
    for (int i = 0; i < 5; i++) {
      try {
        Thread.sleep(10);
        System.out.println("主线程" + i);
     } catch (Exception e) {
     }
   }
    System.out.println("主线程执行完毕!");
 }
}

结果如下

主线程0
子线程...0
主线程1
子线程...1
主线程2
子线程...2
主线程3
子线程...3
子线程...4
主线程4
主线程执行完毕!

主线程停止,用户线程不会停止,如果我们想要实现主线程停止,用户线程也停止,那么我们可以将用户线程设置为守护线程,这样,主线程停止,用户线程也停止

原文地址:https://www.cnblogs.com/zwh0910/p/15778844.html