Java.lang.Thread类的sleep方法导致Java线程InterruptedException异常

当一个方法后面声明可能会抛出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,以便能够用于可取消活动中,而不至于影响响应。

你可能感兴趣的:(Android开发)