zoukankan      html  css  js  c++  java
  • Java 守护线程(Daemon) 例子

          当我们在Java中创建一个线程,缺省状态下它是一个User线程,如果该线程运行,JVM不会终结该程序。当一个线被标记为守护线程,JVM不会等待其结束,只要所有用户(User)线程都结束,JVM将终结程序及相关联的守护线程。

         Java中可以用 Thread.setDaemon(true) 来创建一个守护线程。咱们看一个Java中有关守护线程的例子。

          

     1 public class JavaDaemonThread {
     2  
     3     public static void main(String[] args) throws InterruptedException {
     4         Thread dt = new Thread(new DaemonThread(), "dt");
     5         dt.setDaemon(true);//译者注:此次将User线程变为Daemon线程
     6         dt.start();
     7         //continue program
     8         Thread.sleep(30000);
     9         System.out.println("Finishing program");
    10     }
    11  
    12 }
    13  
    14 class DaemonThread implements Runnable{//译者注:此类虽类名是为Daemon线程,其实为User线程
    15  
    16     @Override
    17     public void run() {
    18         while(true){
    19             processSomething();
    20         }
    21     }
    22  
    23     private void processSomething() {
    24         try {
    25             System.out.println("Processing daemon thread");
    26             Thread.sleep(5000);
    27         } catch (InterruptedException e) {
    28             e.printStackTrace();
    29         }
    30     }
    31      
    32 }

          当你运行该程序,JVM main()方法中先创建一个用户线程,再创建一个守护线程。当main()方法结束后,程序终结,同时JVM也关闭守护线程。

          下面就是上述程序执行的结果:

     

    1 Processing daemon thread
    2 Processing daemon thread
    3 Processing daemon thread
    4 Processing daemon thread
    5 Processing daemon thread
    6 Processing daemon thread
    7 Finishing program

           如果我们不将一个线程以守护线程方式来运行,即使主线程已经执行完毕,程序也永远不会结束,可以尝试把上述将线程设为守护线程的那句注释掉,重新运行看看结果:

           通常我们创建一个守护线程,对于一个系统来说在功能上不是主要的。例如抓取系统资源明细和运行状态的日志线程或者监控线程。

     

    原文链接: Javarevisited 翻译: TonySpark
    译文链接: http://www.cnblogs.com/tonyspark/p/3720640.html

    转载请保留原文出处、译者和译文链接。]

  • 相关阅读:
    20151124 Jquery UI form 表单变成dialog
    如何创建windows xp 虚拟机
    mySQL 从删库到跑路
    CF962D Merge Equals
    hihocoder1718 最长一次上升子序列
    2018微软实习笔试一道dp题目总结
    poj3783 Balls
    CF961E Tufurama
    蓝桥杯 高僧斗法
    蓝桥杯 国王的烦恼
  • 原文地址:https://www.cnblogs.com/tonyspark/p/3720640.html
Copyright © 2011-2022 走看看