java 线程的中断

本文探讨了在Java中如何优雅地取消或关闭线程,重点讲解了线程中断的场景、机制以及线程对中断的四种不同反应。中断不是强制终止线程,而是一种协作机制,线程需在合适位置检查中断标志位。文章还强调了正确取消/关闭线程的重要性,并举例说明了中断在RUNNABLE、WAITING/TIMED_WAITING、BLOCKED状态下的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

15.4 线程的中断

       本节主要讨论一个问题,如何在Java中取消或关闭一个线程?我们 先介绍都有哪些场景需要取消/关闭线程,再介绍取消/关闭的机制,以 及线程对中断的反应,最后讨论如何正确地取消/关闭线程。

15.4.1 取消/关闭的场景

       我们知道,通过线程的start方法启动一个线程后,线程开始执行run 方法,run方法运行结束后线程退出,那为什么还需要结束一个线程 呢?有多种情况,比如:

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

       2)在一些图形用户界面程序中,线程是用户启动的,完成一些任 务,比如从远程服务器上下载一个文件,在下载过程中,用户可能会希望取消该任务。

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

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

15.4.2 取消/关闭的机制

       Java的Thread类定义了如下方法:

在这里插入图片描述

       这个方法看上去就可以停止线程,但这个方法被标记为了过时,简 单地说,我们不应该使用它,可以忽略它。

       在Java中,停止一个线程的主要机制是中断,中断并不是强迫终止 一个线程,它是一种协作机制,是给线程传递一个取消信号,但是由线程来决定如何以及何时退出。 本节我们主要就是来理解Java的中断机制。

       Thread类定义了如下关于中断的方法:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值