我想将主线程设为守护线程,但它显示我 IllegalThreadStateException
.
有没有办法做到这一点?
public class DeamonThreads {
public static void main(String[] args) {
System.out.println("Main Started");
System.out.println("Thread type deamon = " + Thread.currentThread().isDaemon());
Thread.currentThread().setDaemon(true);
System.out.println("Thread type deamon = " + Thread.currentThread().isDaemon());
System.out.println("Main End");
}
}
输出Main Started
Thread type deamon = false
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.setDaemon(Thread.java:1367)
at com.threads.DeamonThreads.main(DeamonThreads.java:8)
最佳答案
主线程不能设置为守护线程。因为一个线程可以在它运行之前被设置为守护进程,并且一旦程序启动主线程就开始运行,因此不能被设置为守护线程。
如 javadocs 中所述...
public final void setDaemon(boolean on)
将此线程标记为守护线程或用户线程。当唯一运行的线程都是守护线程时,Java 虚拟机退出。
该方法必须在线程启动之前调用。
参数:
上 - 如果
true
, 将此线程标记为守护线程抛出:
IllegalThreadStateException
- 如果此线程还活着 SecurityException
- 如果 checkAccess()
确定当前线程不能修改这个线程。
关于java - 如何在java中将主线程设为守护线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152481/