zoukankan      html  css  js  c++  java
  • 线程中断

    • 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一样。

    若是在线程没有执行可中断方法执行执行了interrupt之后,再执行可中断方法会立即中断

  • 相关阅读:
    【转贴】Cookie + Session + OAuth + SSO
    zz淘宝商品库MySQL优化实践
    HIVE 数据倾斜调优总结zz
    数据挖掘笔记(一)
    hive函数参考手册
    hive QL(HQL)简明指南zz
    数据挖掘笔记(二)
    python format string (转)
    hive 中转义符使用问题
    关于文档管理
  • 原文地址:https://www.cnblogs.com/Mr-GG/p/xian-cheng-zhong-duan.html
Copyright © 2011-2022 走看看