亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2015年07月20日 12:06:04   作者:鑒客  
這篇文章主要介紹了Java線程之守護線程(Daemon)用法,較為詳細的分析了守護線程的功能與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Java線程之守護線程(Daemon)用法。分享給大家供大家參考。具體如下:

守護線程(Daemon)
Java有兩種Thread:“守護線程Daemon”與“用戶線程User”。
我們之前看到的例子都是用戶,守護線程是一種“在后臺提供通用性支持”的線程,它并不屬于程序本體。
從字面上我們很容易將守護線程理解成是由虛擬機(virtual machine)在內(nèi)部創(chuàng)建的,而用戶線程則是自己所創(chuàng)建的。事實并不是這樣,任何線程都可以是“守護線程Daemon”或“用戶線程User”。他們在幾乎每個方面都是相同的,唯一的區(qū)別是判斷虛擬機何時離開:
用戶線程:Java虛擬機在它所有非守護線程已經(jīng)離開后自動離開。
守護線程:守護線程則是用來服務用戶線程的,如果沒有其他用戶線程在運行,那么就沒有可服務對象,也就沒有理由繼續(xù)下去。
setDaemon(boolean on)方法可以方便的設置線程的Daemon模式,true為Daemon模式,false為User模式。setDaemon(boolean on)方法必須在線程啟動之前調(diào)用,當線程正在運行時調(diào)用會產(chǎn)生異常。isDaemon方法將測試該線程是否為守護線程。值得一提的是,當你在一個守護線程中產(chǎn)生了其他線程,那么這些新產(chǎn)生的線程不用設置Daemon屬性,都將是守護線程,用戶線程同樣。

例:我們所熟悉的Java垃圾回收線程就是一個典型的守護線程,當我們的程序中不再有任何運行中的Thread,程序就不會再產(chǎn)生垃圾,垃圾回收器也就無事可做,所以當垃圾回收線程是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程序設計有所幫助。

相關文章

  • java生成驗證碼工具類

    java生成驗證碼工具類

    這篇文章主要為大家詳細介紹了java生成驗證碼工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java中的final關鍵字使用方式

    Java中的final關鍵字使用方式

    這篇文章主要介紹了Java中的final關鍵字使用方式,final 關鍵字用于修飾不可改變內(nèi)容,更多相關梳理總結,需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • Spring配置數(shù)據(jù)源的三種方式(小結)

    Spring配置數(shù)據(jù)源的三種方式(小結)

    本文主要介紹了Spring配置數(shù)據(jù)源的三種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一文搞懂MyBatis多數(shù)據(jù)源Starter實現(xiàn)

    一文搞懂MyBatis多數(shù)據(jù)源Starter實現(xiàn)

    本文將實現(xiàn)一個MyBatis的Springboot的Starter包,引用這個Starter包后,僅需要提供少量配置信息,就能夠完成MyBatis多數(shù)據(jù)源的初始化和使用,需要的小伙伴可以參考一下
    2023-04-04
  • java字符串反轉示例分享

    java字符串反轉示例分享

    這篇文章主要介紹了將一個字符串進行反轉或者字符串中指定部分進行反轉的方法,大家參考使用吧
    2014-01-01
  • SpringFactoriesLoader類作用詳解

    SpringFactoriesLoader類作用詳解

    SpringFactoriesLoader可以加載jar包下META-INF下的spring.factories,把相關接口的實現(xiàn)按照key,value的形式加載到內(nèi)存,一個接口的多個實現(xiàn)可以按照","進行分割
    2022-10-10
  • Java 將Word轉為HTML的方法

    Java 將Word轉為HTML的方法

    本文介紹如何在JAVA程序中將Word文檔通過Document.saveToFile()方法轉換為HTML文檔,導入jar的兩種方法,文中給大家詳細介紹,感興趣的朋友一起看看吧
    2021-10-10
  • 一文帶你了解如何正確使用MyBatisPlus

    一文帶你了解如何正確使用MyBatisPlus

    在本篇文章中,我們獎通過?MyBatis?Plus?來對一張表進行?CRUD?操作,來看看是如何簡化我們開發(fā)的。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-12-12
  • Springboot如何加載靜態(tài)圖片

    Springboot如何加載靜態(tài)圖片

    這篇文章主要介紹了Springboot如何加載靜態(tài)圖片,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JVM加載class文件的原理機制實例詳解

    JVM加載class文件的原理機制實例詳解

    Java是一種具有動態(tài)性的解釋型語言,類(class)只有被加載到JVM后才能運行,接下來通過本文給大家介紹JVM加載class文件的原理機制詳解,感興趣的朋友一起看看吧
    2022-04-04

最新評論