java线程基础巩固---Daemon线程的创建以及使用场景分析

daemon线程既守护线程,而在jdk中对于Thread中针对守护线程有专门的API,如下:

而之前在公司项目中就看到过有人使用过Thread中的这个API,但是对于它的使用场景完全不知,所以这次好好的学习一下,下面直接上代码来阐述它。

编译运行:

很简单,但是这里可以看到在main函数执行完成之后【关于main函数是否真的退出可以用jconsole去查看一下既可,之前也已经查看过】,咱们新创建的Thread-0线程并未退出,这时由于咱们的Thread-0线程还是属于活跃状态,并未执行完,那接下来给我们的线程设置一个daemon属性再看结果,如下:

编译运行:

可见这时当main线程一结束,其我们的线程也退出了。这也是使用守护之后的一个直观效果,而实用价值其实也是蛮大的,这时可以联想到一个实际要使用daemon线程的场景:客户端与服务器端建立一个TCP的长链接,然后当连接建立之后就创建一个线程来给服务器发送心跳包以便服务器能监听客户端的网络状态,这时如果连接断开了那这个心跳线程也得跟着断开,下面来模拟一下:

编译运行:

发送t线程一执行完,在里面创建的心跳线程也立马终止了,刚好满足我们的场景需求,而如果不给心跳线程设置成deamon线程再看结果:

很显然当t线程结束之后里面的心跳线程就不会退出了,当然啦不通过给心跳线程设置守护线程也能达到当连接断开之后其心跳线程也退出,自己写逻辑控制既可,但是有了守护线程那这个逻辑我们就可以避免自己写了。

下面再来细读一下jdk对它的描述:

那不信这个邪,来试一下:

编译运行:

这个异常在JDK中也有描述,如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webor2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值