当一个方法后面声明可能会抛出InterruptedException异常时,说明该方法是可能会花一点时间,但是可以取消的方法。
抛InterruptedException的代表方法有:
1.Java.lang.Object类的wait方法
2.Java.lang.Thread类的sleep方法。
3.Java.lang.Thread类的join方法。
这里我们只看sleep方法。
interrupt方法是Thread类的实例方法,在执行的时候并不需要获取Thread实例的锁定,任何线程在任何时刻,都可以通过线程实例来调用其他线程的interrupt方法。当在sleep中的线程被调用interrupt方法时,就会放弃暂停的状态,并抛出InterruptException异常,这样一来,线程的控制权就交给了捕获这个异常的catch块了。
Interrupt方法的作用-------
interrupt方法只是改变了中断状态
sleep方法内部会不断的检查中断状态的值,从而自己抛出InterruptedException.
由 Thread
提供并受 Thread.sleep()
和 Object.wait()
支持的中断机制就是一种取消机制;它允许一个线程请求另一个线程停止它正在做的事情。当一个方法抛出 InterruptedException
时,它是在告诉您,如果执行该方法的线程被中断,它将尝试停止它正在做的事情而提前返回,并通过抛出 InterruptedException
表明它提前返回。 行为良好的阻塞库方法应该能对中断作出响应并抛出 InterruptedException
,以便能够用于可取消活动中,而不至于影响响应。