资讯专栏INFORMATION COLUMN

java 多线程 守护线程

tianren124 / 3097人阅读

摘要:的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是垃圾回收器我是子线程我是主线程主线程执行完毕注意必须在之前设置,否则会跑出一个异常。你不能把正在运行的常规线程设置为守护线程。在线程中产生的新线程也是的。

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)

用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止

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

public class DaemonThread {

    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(100);
                    } catch (Exception e) {
                        
                    }
                    System.out.println("我是子线程...");
                }
            }
        });
        thread.setDaemon(true);
        thread.start();
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(100);
            } catch (Exception e) {

            }
            System.out.println("我是主线程");
        }
        System.out.println("主线程执行完毕!");
    }

}

注意
(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。
(2) 在Daemon线程中产生的新线程也是Daemon的。
(3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74267.html

相关文章

  • 慕课网_《细说线程之Thread VS Runnable》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。慕课网教学源码无学习源码第一章课前准备前言课程说明比较和这两种线程创建的方式,需要知道和的基本创建方式。一旦主线程获取到了用户的输入,这时候,阻塞就会解除掉,主线程继续运行,直到结束。 时间:2017年07月08日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://g...

    netScorpion 评论0 收藏0
  • Java线程学习(一)Java线程入门

    摘要:最近听很多面试的小伙伴说,网上往往是一篇一篇的多线程的文章,除了书籍没有什么学习多线程的一系列文章。将此线程标记为线程或用户线程。 最近听很多面试的小伙伴说,网上往往是一篇一篇的Java多线程的文章,除了书籍没有什么学习多线程的一系列文章。但是仅仅凭借一两篇文章很难对多线程有系统的学习,而且面试的时候多线程这方面的知识往往也是考察的重点,所以考虑之下决定写一系列关于Java多线程的文章...

    Donne 评论0 收藏0
  • Java基础学习——线程之停止线程守护线程

    摘要:方法将冻结状态的线程强制运行,并抛出异常。注意只有在运行状态的线程才能读到标识位,最终停止线程。当正在运行的线程都是守护线程时,虚拟机退出。 stop()等方法过时以后,停止线程的唯一方法就是结束run()方法:开启多线程运行通常都是循环结构,只要使用标识位控制住循环,就可以让run()方法结束,即线程结束。 特殊情况:当线程处于了冻结状态就不会读取到标记,那么线程就不会停止。 int...

    _Suqin 评论0 收藏0
  • Thread源码剖析

    摘要:现在已经没有强制线程终止的方法了由于方法可以让一个线程终止掉另一个线程被终止的线程会立即释放锁,这可能会让对象处于不一致的状态。 前言 昨天已经写了: 多线程三分钟就可以入个门了! 如果没看的同学建议先去阅读一遍哦~ 在写文章之前通读了一遍《Java 核心技术 卷一》的并发章节和《Java并发编程实战》前面的部分,回顾了一下以前写过的笔记。从今天开始进入多线程的知识点咯~ 我其实也是相...

    HtmlCssJs 评论0 收藏0
  • @Java | Thread & synchronized - [ 线程 理论知识]

    摘要:死亡线程方法执行结束,或者因异常退出了方法,则该线程结束生命周期。死亡的线程不可再次复生。直到当前的线程放弃此对象上的锁定,才能继续执行被唤醒的线程。枚举程序中的线程。强迫一个线程等待。通知一个线程继续运行。 一. 线程状态转换图 showImg(https://segmentfault.com/img/bV38ef?w=968&h=680); 线程间的状态转换说明: 新建(new)...

    harryhappy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<