首页 > 编程语言 > 详细

线程中断

时间:2020-04-07 22:50:53      阅读:72      评论:0      收藏:0      [点我收藏+]
  • public void interrupt()
  • public boolean isInterrupted()
  • public static boolean interrupted()
    以下方法:
  • Object.wait
  • Thread.sleep
  • Thread.join
  • 其他

可中断方法的定义:一些方法使当前线程进入阻塞状态,若是被另一个线程调用被阻塞线程的interrupt方法,则会打断这种阻塞,因此这些方法有时被称为可中断方法,这种打断不是结束线程的生命周期,只是打断了阻塞的状态。

线程内部有一个flag记录当前线程是否被中断。被中断为true。

  1. public void interrupt()打断的阻塞状态,若是线程处于阻塞状态下执行了此方法,flag被设置true,会抛出InterruptedException的异常,在以上阻塞状态抛出异常之后会清除Thread中的flag为false。若当前线程不是以上方法导致的阻塞不会抛出异常,flag也不会被清除。
  2. public boolean isInterrupted()判断线程是否被中断,该方法仅仅是对interrupt标识的一个判断,不会产生影响。
  3. public static boolean interrupted()与上面的一样也是判断当前线程是否被中断,但是两者的区别是该方法会判断之后直接擦除掉线程interrupt的flag标记。也就是说如果当前线程被打断之后flag为true,调用此方法后会设置为false,并且一直是false,除非该线程被再次打断。这个场景类似interrupt()打断了阻塞方法的线程后清除了flag一样。

线程中断

原文:https://www.cnblogs.com/Mr-GG/p/xian-cheng-zhong-duan.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!