社区首页 >专栏 >面试题97:Thead类中interrupt()、interrupted()、isInterrupted()区别是什么? - 这3个方法都是用于线程中断操作或判断的。那么,严格地讲,线程中断并不会是线程立即退出,而是给线程发送一个通知,告知目标线程有人希望你退出了,至于目标线程接到通知后如何处理,则完全由目标线程自行决定。
- 三个方法的区别:
- interrupt():中断线程,并添加中断状态。
- interrupted():判断是否被中断,并清除当前中断状态。
- isInterrupted():只是判断是否被中断,并不清除当前中断状态。
- 实例一:我们利用interrupt()来打断线程
- 实例二:利用interrupted()清除中断状态
- 实例三:由于异常清除了中断状态,所以isInterrupted方法会返回false,那么无法通过break跳出无限循环。
- 实例四:异常清除了中断状态,所以再次执行interrupt()添加中断状态,这样isInterrupted方法会返回true,执行break跳出循环。
本文参与
腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-04,如有侵权请联系
cloudcommunity@tencent.com 删除