千家信息网

java中需要进行线程中断的场景有哪些

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍java中需要进行线程中断的场景有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!需要进行线程中断的场景很多线程的运行模式是死循环,比如在生产者/消费者模式中
千家信息网最后更新 2025年01月31日java中需要进行线程中断的场景有哪些

这篇文章主要介绍java中需要进行线程中断的场景有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

需要进行线程中断的场景

  • 很多线程的运行模式是死循环,比如在生产者/消费者模式中,消费者主体就是一个死循环,它不停的从队列中接受任务,执行任务,在停止程序时,我们需要一种"优雅"的方法以关闭该线程。

  • 在一些用户启动的任务中,线程是用户启动的,比如手动启动批次任务,在任务执行过程中,用户可能会希望取消该任务。

  • 在一些场景中,比如从第三方服务器查询一个结果,我们希望在限定的时间内得到结果,如果得不到,我们会希望取消该任务。

  • 有时,我们会启动多个线程做同一件事,比如类似抢火车票,我们可能会让多个好友帮忙从多个渠道买火车票,只要有一个渠道买到了,我们会通知取消其他渠道。

涉及的线程方法(Thread对象方法)

  • public boolean isInterrupted() 判断线程中断标志位是否为true

  • public void interrupt() 设置线程中断标志位为true,但对于线程不同的状态,不一定能设置成功。

  • public static boolean interrupted() 返回线程中断标志位,并清空。

线程对中断的反应

分几种情况:

RUNNABLE状态-线程调用了start()方法,处于等待系统调度或在运行中

这种情况下只设置中断标志位。

WAITING/TIMED_WAITING-等待状态

当调用如下方法时进入等待状态,包括的方法有:

WATING:调用了锁资源的wait方法,或调用了join方法。

TIMED_WAITING:wait(long timeout),sleep(long millis),join(long millis)。(wait与sleep的区别:是否释放锁)。

抛出InterruptedException异常并且线程中断标志位被清空,针对此一般一般是交由上级处理,若希望线程中断,在catch里面执行清理工作或重设线程标志位。

BLOCKED-线程处于锁等待队列,试图进入同步块

只设置标志位。

NEW/TERMINATED-线程结束了或还未调用start()方法

不会有任何效果。

注意

不是说调用了interrupt()方法,线程就终止了,需要线程实现者通过代码实现,如下:

while (!Thread.currentThread().isInterrupted()) {//清理逻辑 }

以上是"java中需要进行线程中断的场景有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

线程 方法 任务 标志 场景 状态 多个 渠道 用户 内容 情况 模式 消费者 火车 火车票 篇文章 结果 队列 循环 消费 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 导出数据库文件后怎么导入 湖南数据网络技术经验丰富 网络安全员管理竞赛 如何安装 服务器管理器 河南上位机软件开发 数据库网络工程师证书照片 服务器主机用什么防护软件 计算机网络技术检查网络 摩纹网络技术有限公司 网络安全为人民主题班会记录 网络安全复杂 软件开发 产品化思维 我的世界改昵称该怎么进服务器 行业经济数据库 互联网专业和网络技术有区别吗 中国移动网络安全自查总结 深圳长乐网络技术有限公司 山东专业软件开发设施价格优惠 莆田伟创网络技术有限公司 信息系统软件开发岗位职责 数据软件开发负面清单 软件开发注重三大要素 阳江自主可控软件开发优化价格 科技互联网推广如何做 档案馆网络安全工作计划 北京优雅施软件开发服务中心 服务器怎么敲命令 莆田伟创网络技术有限公司 mysql数据库账号导出 网络安全投标标书范本
0