Java 中如何终止一个正在运行的线程

 作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题


代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等


联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等

回答

在 Java 中要终止一个正在运行的线程,有三种方法:

  1. 使用退出标志。使用一个标志变量来控制线程是否正常退出任务。线程的主循环不断检测这个变量,当变量标志为停止时,线程安全退出。
  2. 利用中断机制。调用线程的 interrupt() 来控制线程中断。
  3. 强制退出。调用线程的 stop() 强行终止线程,不推荐这种方法,

详解

使用退出标志

当我们使用轮询或者调用第三方库失败需要不断重试时,这些类似的场景大部分都存在类似一个这样的循环体 while(true) { ... },一般这种场景就比较适合实用退出标志来结束线程的运行。

具体方法是:设置一个 volatile 修饰的共享变量,当变量为 true 时线程正常运行,当需要中断时,将该共享变量设置为 false。代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值