如何使主线程成为java中的守护线程?
我想将主线程设置为守护线程,但它显示了如何使主线程成为java中的守护线程?,java,multithreading,daemon,Java,Multithreading,Daemon,我想将主线程设置为守护线程,但它显示了IllegalThreadStateException。 有办法吗 public class DeamonThreads { public static void main(String[] args) { System.out.println("Main Started"); System.out.println("Thread type deamon = " + Thread.currentThread().is
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");
}
}
Output
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中所示… 将此线程标记为守护进程线程或用户线程。当运行的线程都是守护进程线程时,Java虚拟机将退出 必须在线程启动之前调用此方法。 参数: on-如果
true
,则将此线程标记为守护进程线程
抛出:
-如果此线程处于活动状态非法线程状态异常
-如果SecurityException
确定当前 线程无法修改此线程checkAccess()
public static void main(String[] args) {
...create at least one non-daemon thread...
Thread t = new Thread(() -> {
daemon_main(args);
});
t.setDaemon(true);
t.start();
}
public static void daemon_main(String[] args) {
...do whatever else main() did...
}
你为什么要这么做?你认为这意味着什么?
public static void main(String[] args) {
...create at least one non-daemon thread...
Thread t = new Thread(() -> {
daemon_main(args);
});
t.setDaemon(true);
t.start();
}
public static void daemon_main(String[] args) {
...do whatever else main() did...
}