不为难自己,迟早会委屈自己!

关于线程中断的3个重要方法总结

最近老有不少开发人员咨询线程中断的相关知识,刚好利用业余时间总结了下,请大家不吝指教:

线程中断主要设涉及3个方法:实例方法 interrupt、静态方法interrupted、实例方法isInterrupted:

    1. 实例方法 interrupt作用:此方法调用后,如果调用实例线程当前正在调用wait、join、sleep、或在可中断的InterruptibleChannel IO操作、或阻塞在 Selector ,这几种情况下线程会在调用上述方法的代码块中抛出相应的InterruptedException ,但不会将中断状态值interrupt status由false设为true;如果当前现在正在正常执行,则调用interrupt方法调用后只是会设置一下线程的interrupt status,由false变成true;根据此方法的特点,抛出异常与设置中断状态值为true不会同时进行;

    2. 静态方法interrupted作用:清除当前线程interrupt status状态值,即如果当前线程的中断状态值是true(即已被中断),则调用此方法后中断状态值将变成false,此时方法返回值为true,表示清楚中断状态成功;如果当前线程未被中断,则不会改变中断状态值,此时方法返回值为false。因此,如果在线程已被中断的情况下连续两次调用interrupted方法,第一次返回true,第二次返回false;根据此方法的特点,可以看出:只有当前线程自己才可以将中断状态值由true改为false

    3. 实例方法isInterrupted作用:只是检测调用实例线程的中断状态值,如果已中断则返回true,否则返回false;

然否?

posted on 2016-01-20 11:10  Dimmacro  阅读(458)  评论(1编辑  收藏  举报