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

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

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

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

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

回答

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

使用退出标志。使用一个标志变量来控制线程是否正常退出任务。线程的主循环不断检测这个变量,当变量标志为停止时,线程安全退出。

利用中断机制。调用线程的 interrupt() 来控制线程中断。

强制退出。调用线程的 stop() 强行终止线程,不推荐这种方法,

详解

使用退出标志

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

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

相关推荐

铲子超详细攻略篇
365一直提款维护中

铲子超详细攻略篇

📅 08-24 👁️ 9446
翠塘蒟蒻豆腐
365彩票手机版下载

翠塘蒟蒻豆腐

📅 07-27 👁️ 7207
剑网3霸刀跟宠任务全流程指南 霸刀跟宠任务图文详解
365彩票手机版下载

剑网3霸刀跟宠任务全流程指南 霸刀跟宠任务图文详解

📅 07-06 👁️ 4703
国产曲面电视对决
365app安卓客户端下载

国产曲面电视对决

📅 08-20 👁️ 9698
示字旁表示与什么有关(哪些隐藏在汉字里的文化密码)
365彩票手机版下载

示字旁表示与什么有关(哪些隐藏在汉字里的文化密码)

📅 07-08 👁️ 4686
善字笔顺、笔画顺序
365彩票手机版下载

善字笔顺、笔画顺序

📅 07-24 👁️ 7346