回答
守护进程线程和非守护进程线程之间的主要区别在于,当所有非守护进程线程都终止时,程序将终止。所以如果你有一个活动的守护进程线程并结束你的第一个线程,程序就会终止。所以,只要程序运行,你就会想要使用一个守护线程来保存你想要做的事情。
一个守护线程是一个线程,这并不妨碍JVM退出时程序完成,但线程仍在运行。 守护线程是服务供应商在同一个进程中守护线程
E.g垃圾收集运行的其他线程。
通过调用Thread对象上的setDaemon(true)
,可以明确指定用户线程创建的线程为守护进程线程。
供您参考,
注意,
setDaemon()
方法必须 线程的start()
方法之前被称为是一个invoked.Once线程 开始执行(即其start()
方法被称为)它的守护进程 状态不能改变。若要确定 线程是否为守护进程线程,请使用 访问器方法isDaemon()
。
被视为守护进程的线程会发生什么情况?
标志isDaemon()
将被设置为true。
什么不会发生是;此线程不会停止应用程序退出。
这会对线程造成什么影响?
没有,除非你看isDaemon()方法。
线程上的“can and can'ts”是什么?
你可以在守护线程中做任何事情,你可以在非守护线程中做任何事情。
你不能保证线程将完成。在Java的守护程序和非守护线程之间
差异:
1)JVM不会等待任何守护线程到现有之前完成。
2)当JVM终止时,守护线程与用户线程的处理方式不同,最后阻塞不被调用,堆栈不会被解除并且JVM刚刚退出。
守护进程线程是一个不会阻止程序结束的线程。
举个例子: Java应用程序开始与只有一个线程,则“主”运行于main
方法线程。这是一个常规(非守护进程)线程。现在再想象一下,程序启动另一个线程,它可以在循环中进行一些操作。如果新线程是一个普通的(非守护进程)线程,它会阻止程序在“main”结束时完成,并且会一直持续下去!
class HelloThread extends Thread
{
public void run()
{
for (; ;)
{
System.out.println("hello");
sleep(1000);
}
}
}
public class RegularThreader
{
public static void main(String[] args)
{
Thread hello = new HelloThread();
hello.start();
System.out.println("Sorry, I must be leaving");
}
}
现在,这并不总是需要的。有时你想在程序结束时结束这个“背景”处理。为此,您可以将线程标记为守护线程。守护线程不阻止程序结束,但停止在主线程,停止
public class DaemonThreader
{
public static void main(String[] args)
{
Thread hello = new HelloThread();
hello.setDaemon(true);
hello.start();
System.out.println("Sorry, I must be leaving");
}
}
尝试运行上面的两个不同的类,看看 输出是如何不同。 守护进程线程的经典示例是在许多Java虚拟机中找到的垃圾回收线程。它需要在任何其他线程运行时连续运行,但不应阻止程序退出。程序退出时,不再需要垃圾收集器。
- 1. 守护线程Java
- 2. java守护进程线程
- 3. 守护线程
- 4. 在java中的守护进程线程
- 5. Java中的守护进程和非守护线程优先级
- 6. Java的守护线程使用JNI
- 7. 守护线程执行
- 8. 守护线程说明
- 9. 如何像守护线程一样启动Java主线程?
- 10. 守护进程线程是否也是守护进程线程启动的线程?
- 11. 关于守护线程提供非守护线程一些服务
- 12. 关于守护进程线程
- 13. Python线程和守护进程
- 14. 了解Python守护进程线程
- 15. 守护程序线程不止一个?
- 16. 退出守护进程线程
- 17. 创建守护进程线程
- 18. HTTP ::守护进程和线程
- 19. 守护程序线程 - 使用案例
- 20. 守护进程线程终止于jvm
- 21. 使用转换用户线程 - >守护程序线程
- 22. Python多线程:如何让守护进程线程运行
- 23. 在Java线程池中使用守护进程线程不起作用
- 24. Java线程监视。如何找出非守护进程活动线程?
- 25. 在守护进程线程中创建的进程的主线程是守护进程本身吗?
- 26. 守护进程线程数,线程数和总启动线程数
- 27. Java在applet重新加载中杀死守护进程线程
- 28. 如何在java中检查守护进程线程状态?
- 29. java中的工作者和守护进程线程
- 30. Python的多线程守护进程(模块守护进程,并线程一起使用)