android开发之线程(守护线程daemon)

109 篇文章 0 订阅
1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程   
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。  
  虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。 
3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下 
  如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来 
4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon线程 

  默认产生的线程全部是Non-daemon线程 

显示代码打印01 class   A   implements   Runnable{    

02           public   void   run(){    

03                   for(;;){    

04                           System.out.println("Thread   A   run");    

05                   }    

06           }    

07       

08           public   static   void   main(String[]   args){    

09                   System.out.println("Thread   main   started!");    

10                   try{    

11                           (new   Thread(new   A())).start();    

12                   }   catch   (Exception   e){    

13                   }    

14                   System.out.println("Thread   main   ended!");    

15           }    

16   }; 

 会一直跑下去,因为main进程结束了,但   A   进程还没有结束,虚拟机不能退出,  

显示代码打印01 class   A   implements   Runnable{    

02           public   void   run(){    

03                   for(;;){    

04                           System.out.println("Thread   A   run");    

05                   }    

06           }    

07       

08           public   static   void   main(String[]   args){    

09                   System.out.println("Thread   main   started!");    

10                   try{    

11                           Thread   a   =   new   Thread(new   A());    

12                           a.setDaemon(true);    

13                           a.start();    

14                   }   catch(Exception   e){    

15                   }    

16                   System.out.println("Thread   main   ended!");    

17           }    

18   }; 

main   线程一退出,虚拟机就退出了,因为剩下在跑的   a   线程是守护线程,虚拟机不管它的死活的,直接退出了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值