线程什么时候会报InterruptedException
抛InterruptedException的代表⽅法有:
wait⽅法
1. java.lang.Object 类的 wait
sleep ⽅法
2. java.lang.Thread 类的 sleep
join ⽅法
3. java.lang.Thread 类的 join
执⾏wait⽅法的线程,会进⼊等待区等待被notify/notify All。在等待期间,线程不会活动。贝乐学科英语怎么样
执⾏sleep⽅法的线程,会暂停执⾏参数内所设置的时间。
执⾏join⽅法的线程,会等待到指定的线程结束为⽌。英语日记格式
-
- 可以取消的⽅法
埃及王子主题曲
因为需要花时间的操作会降低程序的响应性,所以可能会取消/中途放弃执⾏这个⽅法。
这⾥主要是通过interrupt⽅法来取消。
1. sleep⽅法与interrupt⽅法好文章阅读网
sleep⽅法与interrupt⽅法
interrupt⽅法是Thread类的实例⽅法,在执⾏的时候并不需要获取Thread实例的锁定,任何线程在任何时刻,都可以通过线程实例来调⽤其他线程的interrupt⽅法。
当在sleep中的线程被调⽤interrupt⽅法时,就会放弃暂停的状态,并抛出InterruptedException异常,这样⼀来,线程的控制权就交给了捕捉这个异常的catch块了。
wait⽅法和interrupt⽅法
2. wait⽅法和interrupt⽅法
当线程调⽤wait⽅法后,线程在进⼊等待区时,会把锁定接触。当对wait中的线程调⽤interrupt⽅法时,
derted会先重新获取锁定,再抛出InterruptedException异常,获取锁定之前,⽆法抛出InterruptedException异常。
join⽅法和interrupt⽅法
cheat3. join⽅法和interrupt⽅法
樱桃用英语怎么说当线程以join⽅法等待其他线程结束时,⼀样可以使⽤interrupt⽅法取消。因为join⽅法不需要获取锁定,故⽽与sleep⼀样,会马上跳到catch 程序块
kingnetinterrupt⽅法其实只是改变了中断状态⽽已。
⽽sleep、wait和join这些⽅法的内部会不断的检查中断状态的值,从⽽⾃⼰抛出InterruptEdException。
所以,如果在线程进⾏其他处理时,调⽤了它的interrupt⽅法,线程也不会抛出InterruptedException的,只有当线程⾛到了sleep, wait, join 这些⽅法的时候,才会抛出InterruptedException。若是没有调⽤sleep, wait, join这些⽅法,或者没有在线程⾥⾃⼰检查中断状态,⾃⼰抛出InterruptedException,那InterruptedException是不会抛出来的。
虎父无犬子什么意思isInterrupted
isInterrupted⽅法,可以⽤来检查中断状态
Thread.interrupted⽅法,可以⽤来检查并清除中断状态。
理由英语
Thread.interrupted