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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王捷 黑马帝   /  2011-9-6 18:14  /  1579 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

既然 API上面说了
当正在运行的线程都是守护线程时,Java 虚拟机退出。

那么属于main方法的线程会不会退出呢? 它算不算守护线程?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-9-6 18:19:38
沙发
只要是JAVA虚拟机退出的时候,任何线程都会退出。自然就不会是守护线程

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-6 18:29:09
藤椅
楼主的问法让我有点迷糊……属于main方法的线程和Java虚拟机的退出有什么关系呢……

所谓守护线程,就相当于为你的操作提供服务的线程
举个例子吧,你可以把Java虚拟机运行的过程想象成餐厅营业的过程
当餐厅来了顾客以后,餐厅就正式开始营业,其间服务员会为顾客服务
当餐厅里的顾客走光了以后,也就是只剩下服务员的时候,餐厅就会停止营业

在这里,你就可以把顾客看作是非守护线程,服务员看做是守护线程
当所有的非守护线程都退出了之后,也就是只剩下守护线程的时候,Java虚拟机退出

在Java中,守护线程指的其实就是一些内存回收,垃圾清理之类的线程
而你在这里提出的属于main方法的线程,它属于主线程,所以当然不算守护线程

所以,只有当属于main方法的线程退出之后,Java虚拟机才会退出
而不能说Java虚拟机退出之后,属于main方法的线程会不会退出

这样解释是否清楚了呢?

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的不错!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-7 00:19:44
板凳
LS已经回答的很好了
关键就是这句【[color=Red]只有当属于main方法的线程退出之后,Java虚拟机才会退出[/color] 】
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马