被阻塞的线程被调用了interrupted()之后的疑问

来源:8-9 interrupt函数

莨菽菽

2020-05-10

被阻塞线程抛出InterruptedException就立刻恢复成runnable状态,立马就拿到了cpu,怎么有一种强行抢到cpu执行权的感觉,如果我在catch(InterruptedException e)里写业务逻辑,是不是感觉能很鸡贼的能很快抢占cpu的使用权?还有就是如果要在catch()块里安全的结束线程,要调用什么方法呢?因为之前的run()里的业务可能才执行到一半,在catch()里结束线程不一样还是没执行完成业务逻辑?

写回答

1回答

翔仔

2020-05-10

同学好,当一个方法抛出 InterruptedException 时,这意味着,如果执行该方法的线程被中断,它将尝试停止它正在做的事情而提前返回,并通过抛出 InterruptedException 表明它提前返回。 行为良好的阻塞库方法应该能对中断作出响应并抛出 InterruptedException,以便能够用于可取消活动中,而不至于影响响应。

所以InterruptedException并不会恢复runnable呀,取决于程序,该进锁池还是要进的。。

0
3
莨菽菽
非常感谢!
2020-05-12
共3条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程