InterruptedException的学习

首先贴一下overstack上的一个回答:

理解:

(1)throws InterruptedException是你方法声明的一部分,也是你调用方法的返回值。

(2)当你的方法调用另一个方法的时候抛出了InterruptException异常,你就应该思考:InterruptException对于你的方法来说是不是有意义的结果?如果是,那你的方法就可以进行异常声明并将异常进行向上传播.例如:你的方法需要等待网络传递过来数值参数来完成计算并返回结果,如果网络一直阻塞导致无法完成计算过程,你就可以将InterruptedException异常进行向上传播.如果不是,那你就不能将InterruptedException抛出,而是应该将其捕获.有两件事情你应该熟记在心:1.其他线程可能阻塞了你的线程,或者是想优雅的取消你的操作,那么你就应该尽快返回. 2.即使你的方法在遇到InterruptedException的时候也能够返回有意义的值,线程被干扰的事实也是很重要的.如果调用你方法的代码想知道你的方法执行期间是否遇到过干扰,你就应该记录下:Threaed.currentThread().interrupt()

 上面的这个例子展示了当调用computeSum这个函数的时候对可能抛出的InterruptException异常的处理,这种方法相比于直接返回栈信息或者抛出RuntimeException异常来说要友好很多.

 

上面的例子是说当你需要读取一个文件,你需要间隔性的尝试10次,如果在线程休眠时期遇到了中断,你就可以进行声明并异常抛出.

转载于:https://www.cnblogs.com/Guoyutian/p/5189434.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值