java线程基础巩固---Daemon线程的创建以及使用场景分析
2017-11-16 22:24
411 查看
daemon线程既守护线程,而在jdk中对于Thread中针对守护线程有专门的API,如下:
而之前在公司项目中就看到过有人使用过Thread中的这个API,但是对于它的使用场景完全不知,所以这次好好的学习一下,下面直接上代码来阐述它。
编译运行:
很简单,但是这里可以看到在main函数执行完成之后【关于main函数是否真的退出可以用jconsole去查看一下既可,之前也已经查看过】,咱们新创建的Thread-0线程并未退出,这时由于咱们的Thread-0线程还是属于活跃状态,并未执行完,那接下来给我们的线程设置一个daemon属性再看结果,如下:
编译运行:
可见这时当main线程一结束,其我们的线程也退出了。这也是使用守护之后的一个直观效果,而实用价值其实也是蛮大的,这时可以联想到一个实际要使用daemon线程的场景:客户端与服务器端建立一个TCP的长链接,然后当连接建立之后就创建一个线程来给服务器发送心跳包以便服务器能监听客户端的网络状态,这时如果连接断开了那这个心跳线程也得跟着断开,下面来模拟一下:
编译运行:
发送t线程一执行完,在里面创建的心跳线程也立马终止了,刚好满足我们的场景需求,而如果不给心跳线程设置成deamon线程再看结果:
很显然当t线程结束之后里面的心跳线程就不会退出了,当然啦不通过给心跳线程设置守护线程也能达到当连接断开之后其心跳线程也退出,自己写逻辑控制既可,但是有了守护线程那这个逻辑我们就可以避免自己写了。
下面再来细读一下jdk对它的描述:
那不信这个邪,来试一下:
编译运行:
这个异常在JDK中也有描述,如下:
而之前在公司项目中就看到过有人使用过Thread中的这个API,但是对于它的使用场景完全不知,所以这次好好的学习一下,下面直接上代码来阐述它。
编译运行:
很简单,但是这里可以看到在main函数执行完成之后【关于main函数是否真的退出可以用jconsole去查看一下既可,之前也已经查看过】,咱们新创建的Thread-0线程并未退出,这时由于咱们的Thread-0线程还是属于活跃状态,并未执行完,那接下来给我们的线程设置一个daemon属性再看结果,如下:
编译运行:
可见这时当main线程一结束,其我们的线程也退出了。这也是使用守护之后的一个直观效果,而实用价值其实也是蛮大的,这时可以联想到一个实际要使用daemon线程的场景:客户端与服务器端建立一个TCP的长链接,然后当连接建立之后就创建一个线程来给服务器发送心跳包以便服务器能监听客户端的网络状态,这时如果连接断开了那这个心跳线程也得跟着断开,下面来模拟一下:
编译运行:
发送t线程一执行完,在里面创建的心跳线程也立马终止了,刚好满足我们的场景需求,而如果不给心跳线程设置成deamon线程再看结果:
很显然当t线程结束之后里面的心跳线程就不会退出了,当然啦不通过给心跳线程设置守护线程也能达到当连接断开之后其心跳线程也退出,自己写逻辑控制既可,但是有了守护线程那这个逻辑我们就可以避免自己写了。
下面再来细读一下jdk对它的描述:
那不信这个邪,来试一下:
编译运行:
这个异常在JDK中也有描述,如下:
相关文章推荐
- Java多线程基础,线程的创建使用以及终止
- Java并发(基础知识)—— 创建、运行以及停止一个线程
- Java 基础巩固:内部类的字节码学习和实战使用场景
- java并发编程---如何创建线程以及Thread类的使用
- java线程基础巩固---多Produce多Consume之间的通讯导致出现程序假死的原因分析
- java线程基础巩固---创建并启动线程
- java线程基础巩固---线程生命周期以及start方法源码剖析
- java线程基础巩固---线程间通信快速入门,使用wait和notify进行线程间的数据通信
- Java中的线程创建,以及使用四种线程池对线程进行管理
- Java 基础巩固:内部类的字节码学习和实战使用场景
- 【Java基础】:线程的三种创建方式对比分析
- java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性
- java线程基础巩固---多线程死锁分析,案例介绍
- java线程基础巩固---策略模式在Thread和Runnable中的应用分析
- java基础巩固系列(五):ArrayList与HashSet的比较,以及HashCode分析
- java线程基础巩固---通过实验分析This锁和Class锁的存在
- Java线程Dump分析工具jstack解析及使用场景
- Java_基础—线程组和线程池的概述和使用以及线程的生命周期
- java基础学习总结——线程之使用Runnable接口创建线程的方法