黑马程序员技术交流社区

标题: 线程问题 [打印本页]

作者: 王捷    时间: 2011-9-6 18:14
标题: 线程问题
既然 API上面说了
当正在运行的线程都是守护线程时,Java 虚拟机退出。

那么属于main方法的线程会不会退出呢? 它算不算守护线程?
作者: 匿名    时间: 2011-9-6 18:19
只要是JAVA虚拟机退出的时候,任何线程都会退出。自然就不会是守护线程
作者: 匿名    时间: 2011-9-6 18:29
楼主的问法让我有点迷糊……属于main方法的线程和Java虚拟机的退出有什么关系呢……

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

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

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

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

这样解释是否清楚了呢?
作者: 匿名    时间: 2011-9-7 00:19
LS已经回答的很好了
关键就是这句【[color=Red]只有当属于main方法的线程退出之后,Java虚拟机才会退出[/color] 】




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2