java Thread 关于调用interrupt后抛出InterruptedException异常的一点解读

本人就不上代码了,我觉得我说的不上代码大家也能懂。

首先,大家得先知道一个点,线程中会有一个中断标记的boolean值,记录当前线程是否打断,这只是一个标记值,并不会实际影响程序的运行,如果需要中断线程,需要自己手动操作。

我自己初始化了A,B两个线程,A线程循环每2秒睡眠一次。B线程调用A线程的引用,执行interrupt方法,B想打断A这个线程,A线程的中断标记值设为true。

这时A线程会抛出InterruptedException异常,抛出异常后中断标记值会立即设为false。这里大家需要注意,B的本意是要打断A,让它中断,但你抛出异常后立即把中断标记设为了false,这相当于擅自改变了B的本意,所以需要在catch的代码块中加一行代码:Thread.currentThread().interrupt();来保证A线程的中断标记为true,是B想要的中断状态。

这只是一种规范操作,实际情况应该自己把握。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值