当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。