Java中的守护进程是什么?

任何人都可以告诉我Java中的守护线程是什么?


守护进程线程是一个线程,当程序完成但线程仍在运行时,该线程不会阻止JVM退出。 守护线程的一个例子就是垃圾收集。

您可以使用setDaemon(boolean)方法在线程启动之前更改Thread守护程序属性。


还有几点(参考:实践中的Java并发)

  • 当一个新线程被创建时,它会继承其父进程的守护进程状态。
  • 普通线程和守护进程线程在退出时会发生什么变化。 当JVM暂停任何剩余的守护进程线程时:

  • 最后块不会被执行,
  • 堆栈没有解开 - JVM刚刚退出。

  • 由于这个原因,应该谨慎地使用守护进程线程,并且将它们用于可能执行任何类型的I / O的任务是危险的。


    以上所有答案都很好。 这里有一个简单的小代码片段,来说明不同之处。 在setDaemon中使用true和false的每个值来尝试它。

    public class DaemonTest {
    
        public static void main(String[] args) {
            new WorkerThread().start();
    
            try {
                Thread.sleep(7500);
            } catch (InterruptedException e) {
                // handle here exception
            }
    
            System.out.println("Main Thread ending") ;
        }
    
    }
    
    class WorkerThread extends Thread {
    
        public WorkerThread() {
            // When false, (i.e. when it's a user thread),
            // the Worker thread continues to run.
            // When true, (i.e. when it's a daemon thread),
            // the Worker thread terminates when the main 
            // thread terminates.
            setDaemon(true); 
        }
    
        public void run() {
            int count = 0;
    
            while (true) {
                System.out.println("Hello from Worker "+count++);
    
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    // handle exception here
                }
            }
        }
    }
    
    链接地址: http://www.djcxy.com/p/41803.html

    上一篇: What is a daemon thread in Java?

    下一篇: how to safely acquire write lock?