當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Thread setDaemon()用法及代碼示例


線程類的 setDaemon() 方法用於將線程標記為守護線程或用戶線程。它的生命周期取決於用戶線程,即當所有用戶線程都死掉時,JVM 會自動終止該線程。它必須在線程啟動之前調用。

如果在線程聲明後調用 setDaemon() 方法,該方法將拋出 IllegalThreadStateException。

用法

public final void setDaemon(boolean on)

參數

on:如果為真,則將該線程標記為守護線程。

返回

如果線程是守護線程,則此方法將返回 true,否則返回 false。

異常

非法線程狀態異常:如果線程還活著。

SecurityException: 如果當前線程不能修改線程。

例子1

public class JavaSetDaemonExp1 extends Thread
{  
    public void run()
    {  
        //checking for daemon thread  
        if(Thread.currentThread().isDaemon())
        {
            System.out.println("daemon thread work");  
        }  
        else
        {  
            System.out.println("user thread work");  
        }  
    }  
    public static void main(String[] args)
    {  
        // creating three threads
        JavaSetDaemonExp1 t1=new JavaSetDaemonExp1(); 
        JavaSetDaemonExp1 t2=new JavaSetDaemonExp1();  
        JavaSetDaemonExp1 t3=new JavaSetDaemonExp1();  
        // set user thread t1 to daemon thread  
        t1.setDaemon(true);
        //call run() method
        t1.start(); 
        // set user thread t2 to daemon thread  
        t2.setDaemon(true);
        // start of threads 
        t2.start();  
        t3.start();  
    }  
}

輸出:

daemon thread work
daemon thread work
user thread work

例子2

在線程啟動後調用 setDaemon() 方法時。

public class JavaSetDaemonExp2 extends Thread
{  
    public void run()
    {  
        System.out.println("Name of thread:"+Thread.currentThread().getName());  
        // //checking for daemon thread  
        System.out.println("Daemon:"+Thread.currentThread().isDaemon());
    }  
    public static void main(String[] args)
    {  
        // creating two threads 
        JavaSetDaemonExp2 t1=new JavaSetDaemonExp2();  
        JavaSetDaemonExp2 t2=new JavaSetDaemonExp2();  
        // call run() method 
        t1.start(); 
        // this will throw exception here 
        t1.setDaemon(true); 
        // call run() method  
        t2.start();  
    }  
}

輸出:

Name of thread:Thread-0
Daemon:false
Exception in thread "main" java.lang.IllegalThreadStateException
	at java.lang.Thread.setDaemon(Thread.java:1359)
	at JavaSetDaemonExp2.main(JavaSetDaemonExp2.java:17)






相關用法


注:本文由純淨天空篩選整理自 Java Thread setDaemon() method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。