当前位置 : 主页 > 编程语言 > java >

守护线程使用

来源:互联网 收集:自由互联 发布时间:2022-07-04
在 Java 中有两类线程: User Thread(用户线程):就是应用程序里的自定义线程。 Daemon Thread(守护线程):比如垃圾回收线程,就是最典型的守护线程。 守护线程(即 Daemon Thread),是一个服

在 Java 中有两类线程:

  • User Thread(用户线程):就是应用程序里的自定义线程。
  • Daemon Thread(守护线程):比如垃圾回收线程,就是最典型的守护线程。
  • 守护线程(即 Daemon Thread),是一个服务线程,准确地来说就是服务其他的线程, 这是它的作用,而其他的线程只有一种,那就是用户线程。
    守护线程特点: 守护线程会随着用户线程死亡而死亡

    守护线程与用户线程的区别
    用户线程,不随着主线程的死亡而死亡。用户线程只有两种情况会死掉,1 在 run 中异 常终止。2 正常把 run 执行完毕,线程死亡。
    守护线程,随着用户线程的死亡而死亡,当用户线程死亡守护线程也会随之死亡。

    package com.yqq.app12;

    /**
    * @Author yqq
    * @Date 2021/11/26 22:26
    * @Version 1.0
    */
    //守护线程
    class Daemon implements Runnable{

    @Override
    public void run() {
    for (int i = 0; i < 20; i++) {
    System.out.println(Thread.currentThread().getName()+" "+i);
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
    class UserThread implements Runnable{

    @Override
    public void run() {
    Thread t = new Thread(new Daemon(),"Daemon");
    t.setDaemon(true);
    t.start();
    for (int i = 0; i < 5; i++) {
    System.out.println(Thread.currentThread().getName()+" "+i);
    try {
    Thread.sleep(500);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
    public class DaemonThread {
    public static void main(String[] args) {
    Thread t = new Thread(new UserThread(),"UserThread");
    t.start();
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println("主线程结束");
    // Thread t = new Thread(new Daemon(),"Daemon");
    // //将该线程设置成守护线程
    // t.setDaemon(true);
    // t.start();
    // try {
    // Thread.sleep(1000);
    // } catch (InterruptedException e) {
    // e.printStackTrace();
    // System.out.println("主线程结束");
    // }
    }
    }

    守护线程使用_java


    网友评论