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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王怡然 黑马帝   /  2012-5-6 18:57  /  1557 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在API上面看到说当正在运行的线程都是守护线程时,Java 虚拟机退出.
那属于main方法的线程会不会推出呢?它不算守护线程吗?

5 个回复

倒序浏览
java main方法为非守护线程(实时线程)
public static void main(String[] args) throws InterruptedException {  
    Thread t = Thread.currentThread();  
    System.out.println("Thread name:"+t.getName());  
    System.out.println("Thread.isDaemon="+t.isDaemon());;  
}  



运行结果:



Thread name:main

Thread.isDaemon=false
回复 使用道具 举报
用户线程Java虚拟机在它所有非守护线程已经离开后自动离开。main函数就是启动的用户线程
而守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
回复 使用道具 举报
被setDaemon标记的线程才为守护线程,也可理解为后台线程。
没有被setDaemon标记的线程,可理解为前台线程
当前台线程结束时,被setDaemon标记的后台线程自动结束。

main方法的线程会不会推出呢?它不算守护线程吗?
main方法可以有多个线程,被setDaemon标记的才算守护线程
回复 使用道具 举报
只有你将这个线程定义成守护线程时,他就是后台线程。
所有的线程都结束了,不管此线程处于什么状态,都随之结束。
我们启动JVM的时候,入口是main,开启了线程,main线程是主线程,肯定是前台线程,不是守护线程。
回复 使用道具 举报
主线程(main)是非守护线程,任何程序都是从main开始执行。可以把main线程叫用户线程。
用户线程的特点:只有当所有用户线程结束,其它线程才会结束
守护线程的特点:所有用户线程结束时自动退出

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马