当前位置: 首页 > news >正文

Java怎么终止一个线程

上一篇文章写了线程的几种状态,最后说了的是终止.这篇文章就来说一下线程怎么终止一个线程.

在以前是有方法来直接终止一个线程的,但是太危险,现在就弃用了.现在终止一个线程,就是看标志位,来终止线程.这么说有点空.下面我们详细说一下怎么终止一个线程.

就比如说,一个线程正在处于运行状态,另外一个线程,我们简单一点直接就是主线程,就是开启一个线程在main方法中写.我们给我们创建的线程命名为thread,当在main方法中调用thread.interrupt()这个方法的时候就会将线程的状态标志为true,就是线程变为可终止的状态.我们可以加判断条件,或者whlie循环加循环条件,让其终止循环或者不去执行判断语句.这样就达到了终止线程的效果.那么还有一个问题,怎么拿到线程的状态,其实很简单,有两个方法,分别是interrupted()和currentThread().isInterrupted()这两个方法有在用法上要区分好currentThread()这个方法会改变标志位,如果为true,调用后会变成false.currentThread().isInterrupted()这个方法却不会,只会获取线程的状态.这两个方法没有好坏因场景来用,下面看代码案例

public class ThreadInterruptDemo {public static void main(String[] args) throws InterruptedException {Thread worker = new Thread(() -> {// 循环执行任务,每次迭代都检查中断状态while (!Thread.currentThread().isInterrupted()) {System.out.println("执行任务中...");try {Thread.sleep(1000); // 模拟任务耗时} catch (InterruptedException e) {// 若在休眠时被中断,会进入这里System.out.println("收到中断信号,准备退出");// 手动重置中断状态(因为异常会清除状态)Thread.currentThread().interrupt();}}// 退出循环后,线程执行完毕,进入终止状态System.out.println("线程已终止");});worker.start();Thread.sleep(3000); // 主线程等待3秒worker.interrupt(); // 发送中断信号(设置标志位为true)}
}

以上就是终止线程的方法

http://www.dtcms.com/a/398073.html

相关文章:

  • 软件项目管理中, UT测试如何体现
  • 神经网络工具箱
  • 软考系统架构设计师知识点-软件系统质量属性
  • 西安网站建设的软件哪个免费的网页制作软件最好
  • 【安装配置】【搭建本地Maven私服】
  • 一维卡尔曼滤波(无过程噪声)详解
  • AUTOSAR---汽车软件架构的标准化与未来展望
  • 压阻式应变传感器
  • Pydantic库应用
  • 【Linux手册】多线程编程的关键支撑:线程池与线程安全
  • 数字孪生:技术应用与实践案例
  • 阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • ubuntu中mysql初始化报错
  • 上海网站推广排名百度图片搜索图片识别
  • 安庆有做网站的吗已矣seo排名点击软件
  • 优雅的 async/await 错误处理模式指南
  • 八、神经网络(下)
  • 鲜花购物商城(WebSocket及时通讯、协同过滤算法、支付宝沙盒支付、Echarts图形化分析、快递物流API)
  • 精准调度,确定性保障:信而泰IEEE 802.1Qbv协议测试实战指南
  • 硬件开发_基于STM32单片机的智能路灯系统
  • 学校校园网站建设服务程序员用的编程软件
  • 网站图标ico企业网关路由器怎么设置
  • 怎么安装并使用数字人EchoMimicV2
  • 电气仿真模型资料合集,微电网优化,综合能源调度,配电网无功优化,风光出力预测,电动汽车
  • FunASR:面向产业落地的端到端语音识别系统
  • FFmpeg 深入精讲(四)SDL音视频渲染实践
  • 用“循序渐进+分班教学”提升口齿不清者的语音识别
  • 细致调优Parakeet-TDT:在Speech Accessibility挑战赛中实现口吃语音识别新突破
  • 什么做书籍的网站做淘宝这种网站
  • Spring MVC 请求执行流程详解