A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看多线程视频,老师讲的守护线程没有搞的太明白,请各位帮忙解释一下。谢谢了。

7 个回复

正序浏览
1、什么是守护线程(Daemon线程)?
守护线程是一个后台运行的线程,与之对比的是用户线程(User线程)。它从属于创建它的线程,因此当创建守护的线程结束时,守护线程也随之消亡。当正在运行的线程都是守护线程时,Java 虚拟机退出。
2、如何创建守护线程?
创建一个新线程,用setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。
3、守护线程的用处?
守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。
守护线程一般是为用户线程服务的。
4、守护线程与用户线程的区别.
用户线程拥有自己的生命周期,不依赖于创建它的线程。在创建它的线程结束后用户线程仍能继续运行。运行有限的一段时间的线程一般来说是用户纯种。
守护线程在创建的线程结束时消亡。无限运行的线程通常应该定义成守护线程,只是因为需要一种结束它们的方式。
(来自csdn)
回复 使用道具 举报
邢晏玮 来自手机 中级黑马 2012-11-5 03:11:38
7#
就是thread中的一个方法,但是这个方法必须在开启线程前调用,它是依赖于主线程而存在的,也称为依赖于前台线程存在,如果前台线程都执行完了,都没有了,后台线程也就跟着消失了来自: Android客户端
回复 使用道具 举报
邢晏玮 来自手机 中级黑马 2012-11-5 03:08:03
地板
就是线程thread中的一个方法,但是使用此方法必须在开启线程前调用,它是一个后台线程,你也可以理解为,依赖前台线程存在的,如果前台线程执行完,它也就跟着结束了,不管它还有没有向下执行的趋势都要结束了,就像毕老师讲的那个例子,主线程都没有了,守护主线程的肯定就跟着消失了!来自: Android客户端
回复 使用道具 举报
邹海洋 来自手机 中级黑马 2012-11-5 02:29:47
报纸
回复不显示手机上
回复 使用道具 举报
邹海洋 来自手机 中级黑马 2012-11-5 00:08:49
板凳
回复 使用道具 举报
邹海洋 来自手机 中级黑马 2012-11-4 23:45:43
藤椅
回复 使用道具 举报
在java中有一类线程,专门在后台提供服务,此类线程无需显式关闭,当程序结束了,它也就结束了,这就是守护线程 daemon thread。如果还有非守护线程的线程在执行,它就不会结束。

守护线程的用处:

      在我们的系统中经常应用各种配置文件(黑名单,禁用词汇),当修改配置文件后,一般要重启服务,系统才能够加载;当重启服务的代价比较高的情况下,这种加载方式不能满足我们的要求,这个时候守护线程该发挥它的作用了,它可以实时加载你的配置文件,无需重启。(当然,相当重要的配置文件,不推荐实时加载
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马