zoukankan      html  css  js  c++  java
  • 多线程之守护线程

    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
    主线程执行完毕!

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

  • 相关阅读:
    使用postman做接口测试(三)
    使用postman做接口测试(二)
    使用postman做接口测试(一)
    RobotFramework安装扩展库包autoitlibrary(四)
    RobotFramework安装扩展库包Selenium2Library(三)
    记录.gitattributes 设置合并时使用本地文件无效的解决方案
    golang 踩坑日记
    linux常用命令记录
    vim配置文件
    mysql case when记录
  • 原文地址:https://www.cnblogs.com/zwh0910/p/15778844.html
Copyright © 2011-2022 走看看