现在的位置: 首页 > 综合 > 正文

守护线程

2018年08月13日 ⁄ 综合 ⁄ 共 1723字 ⁄ 字号 评论关闭

 

守护线程
是特殊的线程,一般用于在后台为其他线程提供服务.
isDaemon():判断一个线程是否为守护线程.
set Daemon():设置一个线程为守护线程.
Thread类和Runnable接口
Thread类
类Thread在包java.lang中定义,它的构造方法如下:
public Thread();
public Thread(Rannable target);
public Thread(Rannable target,String name);
public Thread(String name);
public Thread(ThreadGroup group,Rannable target);
public Thread(ThreadGroup group, String name);
主要方法
isActive() 判断是否处于执行状态
Suspend() 暂停执行
reSume 恢复执行
start() 开始执行
Stop() 停止执行
sleep() 睡眠
run() 程序体
yield() 向其他线程退让运行权
线程优先级
Public statuc final int MAX_PRIORITY最高优先级,10
Public statuc final int MIN_PRIORITY最低优先级,1
Public statuc final int NORM_PRIORITY普通优先级,5
Runnable接口
Runnable接口中只定义了一个方法run()作为线程体,
void run()

Daemon   thread   在Java里面的定义是,如果虚拟机中只有Daemon   thread   在运行,则虚拟机退出。  
  虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。  

class   A   implements   runnable{  
          public   void   run(){  
                  for(;;){  
                          System.out.println("Thread   A   run");  
                  }  
          }  
   
          public   static   void   main(String[]   args){  
                  System.out.println("Thread   main   started!");  
                  try{  
                          (new   Thread(new   A())).start();  
                  }   catch   (Exception   e){  
                  }  
                  System.out.println("Thread   main   ended!");  
          }  
  };  
  会一直跑下去,因为main进程结束了,但   A   进程还没有结束,虚拟机不能退出,  
   
  class   A   implements   Runnable{  
          public   void   run(){  
                  for(;;){  
                          System.out.println("Thread   A   run");  
                  }  
          }  
   
          public   static   void   main(String[]   args){  
                  System.out.println("Thread   main   started!");  
                  try{  
                          Thread   a   =   new   Thread(new   A());  
                          a.setDaemon(true);   
                         a.start(); 
                  }   catch(Exception   e){  
                  }  
                  System.out.println("Thread   main   ended!");  
          }  
  };  
   
  main   线程一退出,虚拟机就退出了,因为剩下在跑的   a   线程是守护线程,虚拟机不管它的死活的,直接退出了。

 

 

 

 

抱歉!评论已关闭.