Java 守護(hù)線程

2018-02-28 15:21 更新

Java線程教程 - Java守護(hù)線程


線程可以是守護(hù)線程或用戶線程。

守護(hù)線程是服務(wù)提供者線程。

當(dāng)JVM檢測(cè)到應(yīng)用程序中的所有線程都只是守護(hù)線程時(shí),它將退出應(yīng)用程序。

我們可以通過使用setDaemon()方法通過傳遞true作為參數(shù),使線程成為一個(gè)守護(hù)線程。

我們必須在啟動(dòng)線程之前調(diào)用一個(gè)線程的setDaemon()方法。否則,一個(gè)java.lang。拋出IllegalThreadStateException。

我們可以使用isDaemon()方法來(lái)檢查線程是否是守護(hù)線程。

創(chuàng)建線程時(shí),其守護(hù)程序?qū)傩耘c創(chuàng)建線程的線程相同。

例子

以下代碼創(chuàng)建一個(gè)線程并將線程設(shè)置為守護(hù)線程。

public class Main {
  public static void main(String[] args) {
    Thread t = new Thread(Main::print);
    t.setDaemon(true);
    t.start();
    System.out.println("Exiting main  method");
  }

  public static void print() {
    int counter = 1;
    while (true) {
      try {
        System.out.println("Counter:" + counter++);
        Thread.sleep(2000); // sleep for 2 seconds
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

上面的代碼生成以下結(jié)果。


例2

以下代碼將線程設(shè)置為非守護(hù)線程。由于這個(gè)程序有一個(gè)非守護(hù)線程,JVM將繼續(xù)運(yùn)行應(yīng)用程序,即使在main()方法完成后。

您必須強(qiáng)制停止此應(yīng)用程序,因?yàn)榫€程在無(wú)限循環(huán)中運(yùn)行。

public class Main {
  public static void main(String[] args) {
    Thread t = new Thread(Main::print);
    t.setDaemon(false);
    t.start();
    System.out.println("Exiting main  method");
  }
  public static void print() {
    int counter = 1;
    while (true) {
      try {
        System.out.println("Counter:" + counter++);
        Thread.sleep(2000); // sleep for 2 seconds
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)