`

守护线程3

 
阅读更多

守护线程是为其他线程的运行提供便利的线程。守护线程不会阻止程序的终止。 

Java的垃圾收集机制的某些实现就使用了守护线程。 

非守护线程包括常规的用户线程或诸如用于处理GUI事件的事件调度线程。 

程序可以包含守护线程和非守护线程。 

程序只有守护线程时,该程序便可以结束运行。 

如果要使一个线程成为守护线程,则必须在调用它的start方法之前进行设置(通过以true作为参数调用线程的setDaemon方法,可以将该线程定义为一个守护线程),否则会抛出IllegalThreadStateException异常。如果线程是守护线程,则isDaemon方法返回真。 

注: 

  • 1、如果在线程已经启动后,再试图使该线程成为守护线程,则会导致IllegalThreadStateException异常
  • 2、事件调度线程是一个无穷循环的线程,而不是守护线程。因而,在基于窗口的应用程序调用System类的exit方法之前,事件调度线程不会终止。
  • 3、不能将关键任务分配给守护线程(如:如写数据文件,计算逻辑等)。这些任务将会在事先没有警告的情况下终止,这可能导致不能正确地完成它们



守护线程和非守护线程的关键不同点: 
     守护线程不会阻止程序的终止(或称为:不会阻止JVM的退出) ,当所有非守护线程都已经结束,则JVM就可以退出了。 
      而非守护线程会阻止JVM的退出,必须所有非守护线程都执行完了才行,除非是强制推出。 
      典型的守护线程例子是JVM中的系统资源自动回收线程,它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。

分享到:
评论

相关推荐

    linux c++ 守护线程,判断程序是否运行,不存在就启动

    在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...

    线程守护程序

    但如果存在守护线程,即使没有其他非守护线程,JVM也会继续运行,直到所有守护线程都完成执行。 创建守护线程的常见应用场景包括后台服务、资源清理、日志记录等。这些任务不直接影响程序的主要业务逻辑,但对程序...

    java daemon 守护线程实例

    java daemon 程序,有助于理解守护线程的概念和使用

    ASPNET中实现在线用户检测(使用后台守护线程).rar

    守护线程是一种特殊的线程,它在应用程序启动时创建,并在所有其他非守护线程结束后继续运行,直到应用程序关闭。在ASP.NET环境中,我们可以巧妙地运用守护线程来定期更新在线用户列表。 首先,我们需要创建一个...

    java 变形金刚中的守护神(守护线程)

    在Java编程语言中,守护线程(Daemon Thread)被称为“变形金刚中的守护神”,这是因为它们在后台默默地工作,为应用程序提供必要的服务,而不会阻止程序的退出。理解并正确使用守护线程是Java多线程编程中的一个...

    精灵线程(Daemon)或守护线程---马克-to-win java视频

    精灵线程(Daemon)或守护线程---马克-to-win java视频

    java的守护线程+log4日志记录

    很多人对java的线程不是很了解,甚至连守护线程都么有听过,其实很简单,守护线程就是普通的线程,区别再于,他就是类似一个秘书一样,记录着所有的非守护线程的信息等等,守护线程,是指为工作线程做相关统计、汇总...

    守护线程系统-含源码

    在Java编程中,守护线程(Daemon Thread)是一种特殊的线程类型,它的主要作用是为应用程序提供后台服务,而不会阻止程序的退出。当所有的非守护线程(用户线程)结束时,JVM会自动关闭守护线程并退出。在本项目...

    FreeRTOS 线程守护看门狗

    FreeRTOS线程守护看门狗 主要功能,建立复位定时器,所有加入守护的线程都必需在指定时间内发送心跳信号,超过时间定时器回调函数不会调用清空看门狗的函数 使用教程:...

    ASPNET中实现在线用户检测(使用后台守护线程)

    根据提供的信息,我们可以详细探讨如何在ASP.NET中实现在线用户检测功能,并且通过使用后台守护线程来确保这一过程能够持续有效地运行。 ### ASP.NET中实现在线用户检测 #### 背景介绍 在线用户检测是一项重要的...

    浅谈java的守护线程与非守护线程

    浅谈java的守护线程与非守护线程 在Java中,有两类线程:UserThread(用户线程)和Daemon Thread(守护线程)。守护线程的作用是为其他线程的运行提供服务,比如说GC线程。它们的本质上来说没有区别,唯一的区别...

    tomcat 线程守护

    在J2EE开发过程中经常由于内存溢出等多方面原因,导致tomcat服务器软件自动停止服务,从而影响了Web服务,本代码采用VB开发,主要是监控tomcat是否被关闭,保证tomcat的正常运行!

    守护线程--源码--练手

    守护线程,也被称为后台线程,是Java编程语言中的一种特殊线程类型。它们的主要特点是在所有非守护线程(用户线程)结束后,守护线程才会被系统强制结束。在Windows环境下,通常我们使用服务来实现长期运行的任务,...

    【java 多线程】守护线程与非守护线程的详解

    3. 不要认为所有的应用都可以分配给守护线程来进行服务,比如读写操作或者计算逻辑。 守护线程的应用场景: 1. 垃圾回收线程:垃圾回收线程是一个典型的守护线程,它的作用是为其他前台线程提供服务,回收不再使用...

    详解Java线程-守护线程与用户线程

    3. 守护线程不会影响JVM的退出,当JVM只剩余守护进程时,JVM进行退出。 4. 守护线程在JVM退出时,自动销毁。 在开发Java守护线程时,需要注意: 1. 在线程启动之前,及执行thread.start()方法前,设置thread....

    线程守护实例 远程线程 木马常用技术 VC6.0

    当被守护的线程结束时,守护线程会执行清理工作,确保资源的释放,防止内存泄漏。在Windows操作系统中,可以通过设置线程属性或者自定义线程间通信机制实现线程守护。 接下来,我们讨论远程线程。远程线程是在一个...

    什么是java的守护线程.pdf

    Java中的守护线程(Daemon Thread)是Java虚拟机(JVM)的一种特殊线程类型,它们在后台执行任务,主要用于为应用程序的其他非守护线程提供服务。守护线程的一个典型例子是垃圾回收器(Garbage Collector),它默默...

    守护线程确保pushService

    在Android应用开发中,"守护线程确保pushService"是一个重要的技术实践,主要目的是确保即使在主应用程序进程被系统回收或者用户关闭后,仍然能够保持某些关键服务的运行,例如推送服务。这样的做法对于实时性要求高...

    浅谈java中守护线程与用户线程

    浅谈java中守护线程与用户线程 本篇文章主要介绍了java中守护线程与用户线程的概念和区别。Java中的线程可以分为两类,即daemon线程(守护线程)和User线程(用户线程)。守护线程是一种特殊的线程,它们的生命周期...

Global site tag (gtag.js) - Google Analytics