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之后,再执行可中断方法会立即中断

  • 相关阅读:
    flutter添加启动图及设置启动时间
    flutter中通过循环渲染组件
    flutter学习资料汇总
    flutter中显现登录页面成功后跳转的方法
    flutter 常用视图组件
    mpvue学习笔记
    按钮放大动画效果
    一位练习时长两年半的内网渗透练习生
    Kali系统中20个超好用黑客渗透工具,你知道几个?
    渗透测试之三内网跳板
  • 原文地址:https://www.cnblogs.com/Mr-GG/p/xian-cheng-zhong-duan.html
Copyright © 2011-2022 走看看