`
geshenyi
  • 浏览: 98209 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Daemon thread

    博客分类:
  • J2SE
阅读更多
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中的daemon thread java中有两种类型的thread,user threads 和 daemon threads。 User threads是高优先级的thread,JVM将会等待所有的User Threads运行完毕之后才会结束运行。 daemon threads是低优先级的...

    Java 守护线程,看这篇文章就对了! ( Daemon Thread )

    Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...

    ThreadDaemon.class

    ThreadDaemon.class

    ThreadDaemon.java

    ThreadDaemon.java

    NET_Source.rar_Detect Object_事件 异步_是否分包_高性能大容量SOCKET并发

    m_daemonThread 是守护进程,用于关闭超时连接。 2. AsyncSocketUserToken:用于SocketAsyncEventArgs绑定,保存 每个Socket服务对象,包括:m_receiveEventArgs接收数据异步事件;m_asyncReceiveBuffer接收数据异步...

    Java多线程守护线程

     在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)  作用  Daemon的作用是为其他线程的运行提供便利服务,守护线程典型的应用是 GC (垃圾回收器),它是一个很称职的守护者。  区别  ...

    Python中Threading用法详解

    daemon thread 守护线程,如果守护线程之外的线程都结束了。守护线程也会结束,并强行终止整个程序。不要在守护进程中进行资源相关操作。会导致资源不能正确的释放。在非守护进程中使用Event。 Thread 类 (group=...

    python-manhole:调试python应用程序的沙井

    概述docs 测试 包裹 Manhole是一种进程内服务,它将接受unix域套接字连接,并显示所有线程的堆栈跟踪和交互式提示。 它可以作为工作在任何时候都Python守护线程... install () # this will start the daemon thread# an

    Java守护线程实例详解_动力节点Java学院整理

    在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。下面通过本文给大家分享java守护线程实例详解,需要的朋友参考下吧

    JAVA最新面试资料-备战2023金三银四

    部的 User Thread 已经撤离,Daemon 没有可服务的线程,JVM 撤离。也可以理解 为守护线程是 JVM 自动创建的线程(但不一定),用户线程是程序创建的线程; 比如 JVM 的垃圾回收线程是一个守护线程,当所有线程已经...

    mylty_thread_review

    多线程复习,欢迎大家Star 包名和内容对应如下: ...no9_daemon_thread 守护线程实例 no10_threadgroup 线程组 no11_thread_catch_exception 指定异常捕获类捕获线程中的异常 no12_producter_consumer_wait_no

    Python守护进程实现过程详解

    即在线程开始(thread.start())之前,调用setDeamon()函数,设定线程的daemon标志。(thread.setDaemon(True))就表示这个线程“不重要”。 如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用...

    python多线程DAY04.txt

    t.name t.getName t.setName t.daemon t.is_alive() 5. 自定义线程类 继承 Thread 重写 run 6. 线程通信 使用全局变量通信 线程的同步互斥 7. Python线程 GIL 影响 : 同一时刻只能解释一个线程,造成

    Python守护线程用法实例

    本文实例讲述了Python守护线程用法。分享给大家供大家参考,具体如下: ...如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用thread.setDaemon(False),设置daemon的值为false。新的子

    北京中科信软solaris培训

    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快速而美丽[v1.0.0][多线程]

    Python提供了_thread和threading两个模块来支持多线程,但_thread提供低级别的、原始的县城支持,以及一...__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None) group:指定该

    Java线程死锁实例及解决方法

    主要介绍了Java线程死锁实例及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    带注释的Bootstrap.java

    private static Bootstrap daemon = null; private static final File catalinaBaseFile; private static final File catalinaHomeFile; private static final Pattern PATH_PATTERN = Pattern.compile("(\".*...

    快速解决pyqt5窗体关闭后子线程不同时退出的问题

    1、设置:self.thread.Daemon=True 2、在子线程设置一个变量,通过改变变量的值使循环不满足条件,自动结束 3、设置析构函数 还有别的奇葩。都不行。 今天发现,其实很简单。就是重构主窗体的closeEvent()函数。 ...

    java程序设计于开发 第七讲 多线程

    多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)

Global site tag (gtag.js) - Google Analytics