Java线程中断Interrupt相关知识

线程的中断:Interrupt

当调用Thread.interrupt()方法时,它实际上是对目标线程设置了一个中断标志位(中断位)。这个操作本身并不会直接停止线程的执行。

线程只有在主动检查中断标志时才会知道自己被中断了。常见的检查方法有两种:

  • Thread.interrupted():这是一个静态方法,它会检查当前线程的中断状态,并在检查后清除中断标志

  • isInterrupted():这是一个实例方法,它只检查线程的中断状态,不会清除中断标志

对于一些阻塞方法(如sleep、wait、join等),当线程在执行这些方法时被中断,这些方法会抛出InterruptedException异常,并且在抛出异常时会自动清除中断标志。这就意味着如果希望在这些方法被中断后,线程还能继续处理中断相关事宜,可能需要在catch块中重新设置中断标志(如Thread.currentThread().interrupt())。

综上所述,Thread.interrupt() 只是设置线程的中断标志,线程是否响应中断取决于线程自身是否检查了中断标志,以及如何处理检查到的中断情况。

使用 sleep(),wait(),join()时,必须都使用 try-catch 中包裹

使用 wait() 需要在同步代码块(Synchronized修饰的)中,sleep() 和 join() 不需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ray-国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值