如何优雅地终止一个线程?
发布日期:2021-06-30 12:45:10
浏览次数:3
分类:技术文章
本文共 586 字,大约阅读时间需要 1 分钟。
我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终止线程的stop方法,通过stop方法可以很快速、方便地终止一个线程,我们来看看stop的源代码。
通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家使用这种API。
那为什么这么好的一个方法怎么不推荐使用,还要标注为废弃呢?
假设有这样的一个业务场景,一个线程正在处理一个复杂的业务流程,突然间线程被调用stop而意外终止,这个业务数据还有可能是一致的吗?这样是肯定会出问题的,stop会释放锁并强制终止线程,造成执行一半的线程终止,带来的后果也是可想而知的,这就是为什么jdk不推荐使用stop终止线程的方法的原因,因为它很暴力会带来数据不一致性的问题。
正因为stop方法太过暴力,所以一般不推荐使用,除非你非常清楚你自己的业务场景,用stop终止不会给你的业务带来影响。
说了这么多,那如何优雅地终止一个线程呢?看看下面的程序。
其实也不难,只需要添加一个变量,判断这个变量在某个值的时候就退出循环,这时候每个循环为一个整合不被强行终止就不会影响单个业务的执行结果。
推荐去我的博客阅读更多:
1.
2.
3.
4.
觉得不错,别忘了点赞+转发哦!
转载地址:https://javastack.blog.csdn.net/article/details/105853661 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月06日 20时04分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
字符流复制Java文件
2019-05-01
字符流复制Java文件改进版
2019-05-01
类加载器【理解】
2019-05-01
其他数字摘要算法实现
2019-05-01
非对称加密算法
2019-05-01
公钥和私钥生成规则
2019-05-01
私钥加密私钥解密
2019-05-01
私钥加密公钥解密
2019-05-01
获取私钥key对象
2019-05-01
获取公钥对象
2019-05-01
什么是数字签名
2019-05-01
数字签名原理
2019-05-01
锁的释放流程-ReentrantLock.unlock
2019-05-01
锁的释放流程-ReentrantLock.tryRelease
2019-05-01
锁的释放流程-unparkSuccessor
2019-05-01
ConcurrentHashMap的源码分析-tryPresize
2019-05-01
生产者消费者的实际使用
2019-05-01
阻塞队列的使用案例-注册成功后增加积分
2019-05-01
序列化的高阶认识-Transient 关键字
2019-05-01
序列化的高阶认识-绕开 transient 机制的办法
2019-05-01