导航
全部
Ada助手
...
Ada助手
登录/注册
社区
Java SE
帖子详情
守护线程有什么用?
fxbird
2006-01-15 12:51:38
不就是系统执行完之后,如果全是守护线程,就终止它,如果是非守护线程,应用程序仍可以执行吗,具体有什么用呢。
...全文
给本帖投票
12810
26
打赏
收藏
守护线程有什么用?
不就是系统执行完之后,如果全是守护线程,就终止它,如果是非守护线程,应用程序仍可以执行吗,具体有什么用呢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
点击菜单项,让它弹出另一个窗口,该如何做?
>>
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
CS_Mercy
2010-06-11
打赏
举报
回复
ChDw 你很爷们。其实你讲的挺好。
Octer
2006-01-18
打赏
举报
回复
to ChDw(米):
佩服老兄的耐心,呵呵
llihua
2006-01-18
打赏
举报
回复
觉得ChDw(米)讲得挺清楚吧
有时候多种技术之间怎么取舍,还要看逻辑。
shenpipi
2006-01-17
打赏
举报
回复
Unix下你加&在命令的最后就行了?
这点不同意,而且还有很多问题.
加了&,只是放后台执行而已,控制台没有释放.
而且,作为一个后台进行,怎么去结束?不能每次都kill吧?
服务程序总要有点服务程序的样子,要不然unix下面也不会费那么大劲做一个daemon来了.
ChDw
2006-01-17
打赏
举报
回复
有这样的必要吗?在Windows中,你可以运行javaw来达到释放控制台的目的,在Unix下你加&在命令的最后就行了。所以守护进程并非一定需要的。
况且很多程序都是专门写一个服务程序来达到机器启动时启动的,并不需要Java本身实现
shenpipi
2006-01-17
打赏
举报
回复
其实java里面的daemon和linux里面的daemon有很大区别的.linux下面的daemon能够释放控制台,后台运行,java里面的daemon线程就是楼上各位所说的了,只是如果jvm中所有的非daemon线程结束的时候,jvm就退出.
俺原来以为java中的daemon线程可以作到linux中daemon一样的功能,结果不是.java什么时候能实现linux下的daemon那样的操作啊?连dos下面都有内存驻留程序.
ChDw
2006-01-17
打赏
举报
回复
难道我如此失败,说了这么久你还是不懂?
守护线程的唯一用途就是告诉JVM不需要等待它退出,当JVM中所有的线程都是守护线程的时候就可以正常的退出了
普通线程不一样,JVM必须等待它的退出才可以正常的退出。
fxbird
2006-01-17
打赏
举报
回复
up
ChDw
2006-01-17
打赏
举报
回复
具体怎么用当然是你自己的应用决定的,这个根本就没有什么谱
如果这个线程的结果是一定要等待的(如写数据文件,计算逻辑等),如果是后台的垃圾回收这种当然就是守护线程。
或许我的语文不太好,但是觉得后面的问题是你根本没有问清楚,我觉得问清楚问题是更重要的学问!
如果你直接问它的应用范围,我想这个应该是更清楚的表达吧!
shenpipi
2006-01-17
打赏
举报
回复
ChDw(米) ,来继续锻炼你的表达能力,这对于一个从事软件行业的人可是很重要的哦.
fxbird
2006-01-17
打赏
举报
回复
to ChDw:
看来你得好好学习语文了,我有必要把问题掰开了揉碎了问,我的意思是说,非守护线程这个特性具体应用在什么地方。难道非守护线程就不能替代它?
挑大梁
2006-01-17
打赏
举报
回复
学习
ChDw
2006-01-17
打赏
举报
回复
唉,看起来还是我没有说清楚。
JVM会等待所有非守护线程退出以后才会退出!
public static void main(String[] args) {
new MyThread().start();
//如果MyThread不是守护线程,那么JVM必须等待MyThread退出了才会退出
//并不是退出main函数就已经表示JVM可以结束!
}
shenpipi
2006-01-17
打赏
举报
回复
如果主线程执行完以后,还有其他非守护线程,程序是不会退出的.
fxbird
2006-01-17
打赏
举报
回复
to ChDw:
我明白你说的意思,但你没有明白我的意思,我是说,非守护线程有什么用?
紫炎圣骑
2006-01-16
打赏
举报
回复
学习。。。
ChDw
2006-01-16
打赏
举报
回复
public static void main 是在一个非守护线程中运行的,但是JVM中并不一定只有这个非守护线程,你可以在程序中启动多个非守护线程,JVM同样也会等待它们的退出。所以并非主线程(运行main方法的线程)退出就一定退出JVM。
ChDw
2006-01-16
打赏
举报
回复
上面说得不对
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)
所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。
无论是什么线程,都一定会分时间片执行的,和上面的检测拼写及输入并没有任何关系
fxbird
2006-01-16
打赏
举报
回复
leniz好像讲得比较明确,但不知对不对,其它人在讲它的作用,等于没讲一样,我问的是原理
cuilichen
2006-01-16
打赏
举报
回复
他是一个监工...
加载更多回复(6)
Java
守护线程
,看这篇文章就对了! ( Daemon Thread )
Java 的
守护线程
Java
守护线程
,看这篇文章就对了!Java 的
守护线程
什么是Java的
守护线程
( Daemon Thread )?
守护线程
的区别?
守护线程
的作用?
守护线程
如何创建?
守护线程
如何判断?
守护线程
使用的注意事项总结 什么是Java的
守护线程
( Daemon Thread )? Java 提供了两种类型的线程:
守护线程
和 用户线程 用户线程 (User Thread) 是高优先级线程。JVM 会在终止之前等待任何用户线程完成其任务。
守护线程
(Daemon Thread) 是低优先级线程。其唯一作用是为用户线程提供服务。 举个例子: 任何一个
守护线程
都是整个JVM
守护线程
是什么?
守护线程
和非
守护线程
的区别是?
守护线程
的作用是?
**
守护线程
**是区别于用户线程哈,**用户线程**即我们手动创建的线程,而
守护线程
是程序运行的时候在后台提供一种**通用服务的线程**。垃圾回收线程就是典型的
守护线程
。
用户线程和
守护线程
有什么区别?
守护线程
都是为JVM中所有非
守护线程
的运行提供便利服务: 只要当前JVM实例中尚存在任何一个非守 护线程没有结束,
守护线程
就全部工作;只有当最后一个非
守护线程
结束时,
守护线程
随着JVM一同结 束工作。 User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部 退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。 ...
面试官:什么是
守护线程
,和普通线程有什么区别?
在多线程编程中,线程是我们最基本的执行单元,而理解线程的生命周期、如何管理线程以及如何优化程序性能是每个开发者必备的技能之一。在 Java 中,线程分为普通线程和
守护线程
两种类型。虽然它们都属于并发执行的线程,但它们在生命周期、资源占用以及对程序退出的影响上有所不同。
守护线程
的作用通常是执行一些后台任务,保证程序的顺利运行,而普通线程则承担着程序主要的业务逻辑。因此,理解它们的区别及使用场景对我们在实际开发中更高效地管理线程、提高程序的执行效率至关重要。特性
守护线程
普通线程生命周期。
守护线程
和非
守护线程
的区别?
一、什么是
守护线程
二、
守护线程
的作用及应用场景 一、什么是
守护线程
守护线程
相对于正常线程来说,是比较特殊的一类线程! JVM 程序在什么情况下能够正常退出? The Java Virtual Machine exits when the only threads running are all daemon threads. 上面这句话来自 JDK 官方文档,意思是: 当 J...
Java SE
62,636
社区成员
307,271
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部