守护(Daemon)线程

来源:互联网 发布:oracle删除重复数据 编辑:程序博客网 时间:2024/06/10 20:39

在Java线程中有两种线程,一种是用户线程,另一种就是守护(Daemon)线程。
什么是守护线程?守护线程是一种特殊的线程,它的特性有陪伴的含义,当进程中不存在非守护线程了,则守护线程自动销毁。守护线程的作用是为其他线程的运行提供便利服务,最典型的应用就是GC(垃圾回收器),它是一个很称职的守护者。
下面通过一个示例演示守护线程随用户线程的结束而销毁。

/*守护线程 * 其它所有的用户线程结束,则守护线程退出。 * 守护线程一般都是无限执行的 */public class Test {    public static void main(String[] args) throws InterruptedException {        MyRunnable myRunnable = new MyRunnable();        Thread t = new Thread(myRunnable);        // 将t这个用户线程修改为守护线程        t.setDaemon(true);        // 设置线程的名称        t.setName("守护线程");        // 启动线程        t.start();        Thread.sleep(1000);        // 主线程        for (int i = 0; i < 5; i++) {            Thread.sleep(1000);            System.out.println(Thread.currentThread().getName() + " i=" + i);        }        System.out.println("主线程结束,守护线程自动销毁!");    }}class MyRunnable implements Runnable {    private int i = 0;    // 实现接口中的run方法    @Override    public void run() {        try {            while (true) {                i++;                System.out.println(Thread.currentThread().getName() + " i=" + i);                Thread.sleep(1000);            }        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

运行结果如图所示
这里写图片描述

守护线程随主线程(用户线程)的结束而自动销毁

原创粉丝点击