`

后台线程(守护线程)

 
阅读更多

所谓的后台线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分。因此当所有的非后台线程结束时,程序也就终止了,同时会杀死所有后台线程。反过来说,只要有任何非后台线程(用户线程)还在运行,程序就不会终止。后台线程在不执行finally子句的情况下就会终止其run方法。后台线程创建的子线程也是后台线程。

下面是一个后台线程的示例:

    <span style="font-size:16px;">package demo.thread; 
     
    import java.util.concurrent.TimeUnit; 
     
    public class DaemonDemo implements Runnable { 
        @Override 
        public void run() { 
            try { 
                while (true) { 
                    Thread.sleep(1000); 
                    System.out.println("#" + Thread.currentThread().getName()); 
                } 
            } catch (InterruptedException e) { 
                e.printStackTrace(); 
            } finally {// 后台线程不执行finally子句 
                System.out.println("finally "); 
            } 
        } 
     
        public static void main(String[] args) { 
            for (int i = 0; i < 10; i++) { 
                Thread daemon = new Thread(new DaemonDemo()); 
                // 必须在start之前设置为后台线程 
                daemon.setDaemon(true); 
                daemon.start(); 
            } 
            System.out.println("All daemons started"); 
            try { 
                TimeUnit.MILLISECONDS.sleep(1000); 
            } catch (InterruptedException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
        } 
    } 
    </spspan> 
 

运行结果:

All daemons started
#Thread-2
#Thread-3
#Thread-1
#Thread-0
#Thread-9
#Thread-6
#Thread-8
#Thread-5
#Thread-7
#Thread-4

分析:从结果可以看出,十个子线程并没有无线循环的打印,而是在主线程(main())退出后,JVM强制关闭所有后台线程。而不会有任何希望出现的确认形式,如finally子句不执行

分享到:
评论

相关推荐

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

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

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

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

    Java后台线程操作示例【守护线程】

    主要介绍了Java后台线程操作,结合实例形式分析了java守护线程相关原理、操作技巧与使用注意事项,需要的朋友可以参考下

    Estom#notes#多线程的其他操作1

    多线程 守护线程守护线程就是后台线程,也是一种依赖线程特点:当前台线程结束后,后台线程会自动终止,作为依赖线程,守护线程,不用强调结束。toString 方法能

    用qt实现的程序守护进程程序

    主要功能: 可设置检测的程序名称。 可设置udp通信端口。 可设置超时次数。 自动记录已重启次数。 自动记录最后一次重启时间。...自动隐藏的托盘运行或者后台运行。 提供界面设置程序名称已经开启和暂停服务。

    java基础知识线程讲解和练习

    Java线程是Java语言中一个非常重要的概念,它允许程序同时执行多个任务。...用户线程是程序显式创建和控制的线程,而守护线程是在后台运行的特殊线程,用于执行一些后台任务,如垃圾回收、资源管理等。

    c# 面试必备线程基础知识点

    线程的知识太多,知识点有深有浅,往深的研究会涉及操作系统、CPU、内存,往浅了说就是一些语法。没有一定的知识积累,很难把线程的知识...根据线程运行模式,可以把线程分为前台线程、后台线程和守护(Daemon)线程:

    Python多线程编程篇教程(实例).PDF

    其实创建线程之后,线程并不是始终保持一个状态的,其状态大概如下: * New 创建 * Runnable 就绪。等待调度 ...* 守护线程(后台线程) * 前台线程 简单了解完这些之后,我们开始看看具体的代码使用了。

    守护进程(互相监听)

    没有采用网上流传的哪几种指标不治本的方法,,而是采用底层ndk,jni思想从本质上解决问题的。希望对大家有所帮助。。

    后台开发核心技术与应用实践

    第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式。 第五部分(第12章)主要是HTTP协议的...

    后台开发的一些源代码

    第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式。 第五部分(第12章)主要是HTTP协议的...

    Linux网络吞吐量多线程基准测试工具。-C/C++开发

    NTTTCP-for-Linux概述一个多线程...支持在后台运行(守护程序,“-D”)。 默认情况下支持发送方和接收方同步模式。 使用“ -N”(no_sync)禁用同步。 支持使用多个客户端模式进行测试(在Receiver上使用“ -M”,

    后台开发 核心技术与应用实践

    第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式。 第五部分(第12章)主要是HTTP协议的...

    徐晓鑫后台开发技术实践——腾讯

    第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式; 第五部分(第12章)主要是HTTP协议的...

    linux下的守护进程

    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。同时,守护进程完成...

    控制台守护进程 Symbian

    实现Server的后台时时运行,实现2个线程的相互咬合

    局域网文件共享软件

    主要工作:写了一个前台和用户交互的程序,写了一个后台和其他电脑通信的守护程序。前台负责发送命令到后台,并接收后台返回的信息。后台用消息队列和前台通信,并向远程客户端提供服务。用到主要编程技术有:多线程...

    linux 管道

    这个是linux 多进程多线程通信的模板,多进程间命名管道实现前台进程控制后台守护进程,线程间使用互斥锁机制

    守护进程、脚本、指定外部配置文件

    ①守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。 ②这是我在公司用的...

    浅析PHP7的多进程及实例

    我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli模式下处理大量数据或运行后台DEMON守护进程时,多进程的优势不用多说...

Global site tag (gtag.js) - Google Analytics