java 守护线程

 

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线程.


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


  1. class     implements   Runnable{    
  2.           public   void   run(){    
  3.                   for(;;){    
  4.                           System.out.println("Thread     run");    
  5.                      
  6.              
  7.      
  8.           public   static   void   main(String[]   args){    
  9.                   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     进程还没有结束,虚拟机不能退出,   
     
   
  1. class     implements   Runnable{    
  2.           public   void   run(){    
  3.                   for(;;){    
  4.                           System.out.println("Thread     run");    
  5.                      
  6.              
  7.      
  8.           public   static   void   main(String[]   args){    
  9.                   System.out.println("Thread   main   started!");    
  10.                   try   
  11.                           Thread       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     线程是守护线程,虚拟机不管它的死活的,直接退出了。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值