多线程并发总结 interrupt

Interrupt也是写多线程的时候需要注意的一个地方。

有时候需要停掉Java的一个线程,这个时候推荐使用的是intertupt的方法。

但是这个方法其实不会直接把线程停掉,只会在一个线程的标志位上面标注当前线程已经被标记成interrupted了。

为什么会是这样操作的呢?我觉得也很容易理解,因为如果硬性中止一个线程,我们根本不知道是不是还有一些资源是没有正常关闭回收的,也就有可能让系统进入一个非正常状态,出现各种未能预知的问题。

所以这个中断的执行还是要让运行的线程自己去执行。

另外的一个需要注意的地方是,就算是自己处理了那个intertupt的状态,也不能只是简单退出,而是要把最后抛出一个interruptException。因为interrupt的状态不应该是一个业务触发的状态,而是出现了一些非正常状态而需要中断的,interrupt的状态可能是当前逻辑触发,也有可能是未知的逻辑触发的。所以贸然去吃掉interrupt可能导致系统不能被中断的情况出现。同理如果是捕捉到interruptException也不能把它吃掉,而是要再往上抛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值