请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

主线程中执行thread.interrupt(),此时子线程没有处于sleep中,能中断子线程吗

代码如下图:图片描述

第29行主线程执行thread.interrupt(),而此时子线程还在执行while循环,这种情况下,子线程执行完while循环后到第18行Thread.sleep()也能抛出异常?
经测试是可以的。
但我以前一直以为:只有子线程正在睡眠时,主线程中执行thread.interrupt()才会导致子线程的sleep抛出异常。我以前的理解是错误的?

正在回答

2回答

悟空 2019-12-25 23:28:56

是的,你以前的理解是错误的。

0 回复 有任何疑惑可以回复我~
  • 提问者 海天s #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-12-25 23:42:34
提问者 海天s 2019-12-25 23:32:54

老师我看了Thread.sleep的源码注释:

https://img1.sycdn.imooc.com/szimg/5e0380970988f95f08190460.jpg

也就是说,只要主线程执行了thread.interrupt(),哪怕子线程此时正在处于业务逻辑,那后面的sleep也会抛出异常?源码注释也不是特别清楚。


0 回复 有任何疑惑可以回复我~
  • 悟空 #1
    恩是的,哪怕子线程此时正在处于业务逻辑,那后面的sleep也会抛出异常
    回复 有任何疑惑可以回复我~ 2019-12-25 23:35:42
  • 提问者 海天s 回复 悟空 #2
    感谢老师有问必答!
    回复 有任何疑惑可以回复我~ 2019-12-25 23:43:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信