1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下
如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来
4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon线程
默认产生的线程全部是Non-daemon线程
class A implements Runnable{
public void run(){
for(;;){
System.out.println("Thread A run");
}
}
public static void main(String[] args){
System.out.println("Thread main started!");
try{
(new Thread(new A())).start();
} catch (Exception e){
}
System.out.println("Thread main ended!");
}
};
会一直跑下去,因为main进程结束了,但 A 进程还没有结束,虚拟机不能退出,
class A implements Runnable{
public void run(){
for(;;){
System.out.println("Thread A run");
}
}
public static void main(String[] args){
System.out.println("Thread main started!");
try{
Thread a = new Thread(new A());
a.setDaemon(true);
a.start();
} catch(Exception e){
}
System.out.println("Thread main ended!");
}
};
main 线程一退出,虚拟机就退出了,因为剩下在跑的 a 线程是守护线程,虚拟机不管它的死活的,直接退出了。
分享到:
相关推荐
java中的daemon thread java中有两种类型的thread,user threads 和 daemon threads。 User threads是高优先级的thread,JVM将会等待所有的User Threads运行完毕之后才会结束运行。 daemon threads是低优先级的...
Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...
ThreadDaemon.class
ThreadDaemon.java
m_daemonThread 是守护进程,用于关闭超时连接。 2. AsyncSocketUserToken:用于SocketAsyncEventArgs绑定,保存 每个Socket服务对象,包括:m_receiveEventArgs接收数据异步事件;m_asyncReceiveBuffer接收数据异步...
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 作用 Daemon的作用是为其他线程的运行提供便利服务,守护线程典型的应用是 GC (垃圾回收器),它是一个很称职的守护者。 区别 ...
daemon thread 守护线程,如果守护线程之外的线程都结束了。守护线程也会结束,并强行终止整个程序。不要在守护进程中进行资源相关操作。会导致资源不能正确的释放。在非守护进程中使用Event。 Thread 类 (group=...
概述docs 测试 包裹 Manhole是一种进程内服务,它将接受unix域套接字连接,并显示所有线程的堆栈跟踪和交互式提示。 它可以作为工作在任何时候都Python守护线程... install () # this will start the daemon thread# an
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。下面通过本文给大家分享java守护线程实例详解,需要的朋友参考下吧
部的 User Thread 已经撤离,Daemon 没有可服务的线程,JVM 撤离。也可以理解 为守护线程是 JVM 自动创建的线程(但不一定),用户线程是程序创建的线程; 比如 JVM 的垃圾回收线程是一个守护线程,当所有线程已经...
多线程复习,欢迎大家Star 包名和内容对应如下: ...no9_daemon_thread 守护线程实例 no10_threadgroup 线程组 no11_thread_catch_exception 指定异常捕获类捕获线程中的异常 no12_producter_consumer_wait_no
即在线程开始(thread.start())之前,调用setDeamon()函数,设定线程的daemon标志。(thread.setDaemon(True))就表示这个线程“不重要”。 如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用...
t.name t.getName t.setName t.daemon t.is_alive() 5. 自定义线程类 继承 Thread 重写 run 6. 线程通信 使用全局变量通信 线程的同步互斥 7. Python线程 GIL 影响 : 同一时刻只能解释一个线程,造成
本文实例讲述了Python守护线程用法。分享给大家供大家参考,具体如下: ...如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用thread.setDaemon(False),设置daemon的值为false。新的子
Structures that describe the state of a kernel thread, an LWP, and a process How a mutex lock works Define a condition variable How a counting semaphore is implemented How a multiple-reader, single-...
Python提供了_thread和threading两个模块来支持多线程,但_thread提供低级别的、原始的县城支持,以及一...__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None) group:指定该
主要介绍了Java线程死锁实例及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
private static Bootstrap daemon = null; private static final File catalinaBaseFile; private static final File catalinaHomeFile; private static final Pattern PATH_PATTERN = Pattern.compile("(\".*...
1、设置:self.thread.Daemon=True 2、在子线程设置一个变量,通过改变变量的值使循环不满足条件,自动结束 3、设置析构函数 还有别的奇葩。都不行。 今天发现,其实很简单。就是重构主窗体的closeEvent()函数。 ...
多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)