程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Java并发编程(二)用户线程和守护线程

balukai 2025-03-05 13:21:12 文章精选 3 ℃

上一篇:Java并发编程(一)什么是并发编程

一、用户线程

默认创建的线程就是非daemon的,我们称之为用户线程,用户线程如果一直在运行,jvm进程是不会退出的;

public class Test {
    public static void main(String[] args) {

        System.out.println("main主线程干的事......");

        new Thread() {

            @Override
            public void run() {
                System.out.println("另外一个线程干的事......");
            }

        }.start();

    }
}

二、守护线程

守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去;比如main线程之类的都执行完了,那么守护线程就会跟着jvm进程一起退出,不会像工作线程一样阻止jvm进程退出,我们一般将后台运行的线程设置为守护线程,如:一些监控线程,失败处理线程等;

setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。

public class Test {
    public static void main(String[] args) {

        System.out.println("main主线程干的事......");

        Thread thread = new Thread() {

            @Override
            public void run() {
                System.out.println("另外一个线程干的事......");
            }

        };
        /** 设置daemon模式开启,该线程为守护线程 */
        thread.setDaemon(true);
        thread.start();

    }
}

Tags:

最近发表
标签列表