美文网首页
Java多线程 - 第二章

Java多线程 - 第二章

作者: 也许________ | 来源:发表于2019-02-22 14:50 被阅读1次
守护线程

Java的线程分为两种:User Thread(用户线程)、DaemonThread(守护线程)

守护线程的特点

只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作,Daemon作用是为其他线程提供便利服务,守护线程最典型的应用就是GC(垃圾回收器)

如何设置守护线程

代码中开启一个线程,在run方法中又创建了一个线程,观察控制台输出
会一直打印 “这里是 childThrad 线程”,这是因为新建的线程一直在循环执行,也就证明了用户线程正在运行,守护线程将会一直存在。
把代码中的注释放开,setDaemon(true),表示设置该线程为守护线程,运行后观察控制台输出:
这里是 userThread 线程
这里是 childThrad 线程
Process finished with exit code 0
只打印了两行日志就结束了,这是因为创建的userThread线程结束工作,做为守护线程的daemonThread就随着jvm一起结束工作

public class DaemonThread {

    public static void main(String[] args) {
        testDaemon();
    }

    public static void testDaemon() {
        Thread userThread = new Thread(new Runnable() {
            @Override
            public void run() {
                Thread daemonThread = new Thread(new ChildThread());
                // daemonThread.setDaemon(true);
                daemonThread.start();
                System.out.println("这里是 userThread 线程");
            }
        });
        userThread .start();
    }
}

class ChildThread implements Runnable {

    @Override
    public void run() {
        while (true) {
            System.out.println("这里是 childThrad 线程");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

-- 控制台输出
这里是 userThread 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程
这里是 childThrad 线程

ps:
守护线程的运用目前理解的不透彻,后面章节会继续补充

相关文章

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

网友评论

      本文标题:Java多线程 - 第二章

      本文链接:https://www.haomeiwen.com/subject/tkgsyqtx.html