重温java知识(三十七、多线程编程之八:后台守护线程)

Java中的线程分为两类:

  • 用户线程:是用户自己开发或者由系统分配的主线程,其处理的是核心功能。
  • 守护线程:(Daemon)是一种运行在后台的线程服务线程,当用户线程存在时,守护线程也可以同时存在;当用户线程全部消失(程序执行完毕,JVM进程结束)时守护线程也会消失。

用户线程和守护线程除了运行模式的区别外,其他的完全相同。

在Java中提供有垃自动垃圾回收机制,实际上这就是属于一个守护线程,当用户线程存在时,GC线程将一直存在,如果全部的用户线程执行完毕了,那么GC线程也就没有存在的意义了。

1、使用守护线程的例子:

package com.mydemo;

public class ThreadDemo {

    public static void main(String[] args) {

        Thread userThread = new Thread(
                () -> {
                    for (int i = 0; i < 5; i++) {
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "正在运行、i = " + i);
                    }
                }, "用户线程"
        );

        // 完成核心的业务
        Thread daemonThread = new Thread(
                () -> {
                    for (int j = 0; j < 5; j++) {
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "正在运行、j = " + j);
                    }
                }, "守护线程"
        );

        // 设置为守护线程
        daemonThread.setDaemon(true);

        userThread.start();     // 启动用户线程
        daemonThread.start();   // 启动守护线程

    }
}

你可能感兴趣的:(Java)