程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java線程之守護線程(Daemon)用法實例

Java線程之守護線程(Daemon)用法實例

編輯:關於JAVA

Java線程之守護線程(Daemon)用法實例。本站提示廣大學習愛好者:(Java線程之守護線程(Daemon)用法實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java線程之守護線程(Daemon)用法實例正文


本文實例講述了Java線程之守護線程(Daemon)用法。分享給年夜家供年夜家參考。詳細以下:

守護線程(Daemon)
Java有兩種Thread:“守護線程Daemon”與“用戶線程User”。
我們之前看到的例子都是用戶,守護線程是一種“在後台供給通用性支撐”的線程,它其實不屬於法式本體。
從字面上我們很輕易將守護線程懂得成是由虛擬機(virtual machine)在外部創立的,而用戶線程則是本身所創立的。現實其實不是如許,任何線程都可所以“守護線程Daemon”或“用戶線程User”。他們在簡直每一個方面都是雷同的,獨一的差別是斷定虛擬機什麼時候分開:
用戶線程:Java虛擬機在它一切非守護線程曾經分開後主動分開。
守護線程:守護線程則是用來辦事用戶線程的,假如沒有其他用戶線程在運轉,那末就沒有可辦事對象,也就沒有來由持續下去。
setDaemon(boolean on)辦法可以便利的設置線程的Daemon形式,true為Daemon形式,false為User形式。setDaemon(boolean on)辦法必需在線程啟動之前挪用,當線程正在運轉時挪用會發生異常。isDaemon辦法將測試該線程能否為守護線程。值得一提的是,當你在一個守護線程中發生了其他線程,那末這些新發生的線程不消設置Daemon屬性,都將是守護線程,用戶線程異樣。

例:我們所熟習的Java渣滓收受接管線程就是一個典范的守護線程,當我們的法式中不再有任何運轉中的Thread,法式就不會再發生渣滓,渣滓收受接管器也就無事可做,所以當渣滓收受接管線程是Java虛擬機上僅剩的線程時,Java虛擬機遇主動分開。

import java.io.IOException;
/**
 * 守護線程在沒有效戶線程可辦事時主動分開
 */
public class TestMain4 extends Thread {
  public TestMain4() {
  }
  /**
   * 線程的run辦法,它將和其他線程同時運轉
   */
  public void run() {
    for(int i = 1; i <= 100; i++){
      try {
        Thread.sleep(100);
      } catch (InterruptedException ex) {
        ex.printStackTrace();
      }
      System.out.println(i);
    }
  }
  public static void main(String [] args){
    TestMain4 test = new TestMain4();
    test.setDaemon(true);
    test.start();
    System.out.println("isDaemon = " + test.isDaemon());
    try {
      System.in.read();
      // 接收輸出,使法式在此停留,一旦吸收到用戶輸出,main線程停止,守護線程主動停止
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}

願望本文所述對年夜家的java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved