中断机制小总结

方法介绍

  • public void interrupt()
    • 实例方法 Just to set the interrupt flag
    • 实例方法仅仅是设置线程的中断状态为true,发起一个协商而不会立刻停止线程
  • public static boolean interrupted()
    • 静态方法 Thread.interrupted();
    • 判断线程是否被中断并清除当前中断状态(做了两件事情)
      • 1.返回当前线程的中断状态,测试当前线程是否已被中断
      • 2.将当前线程的中断状态清零并重新设置为false,清除线程的中断状态
      • 3.这个方法有点不好理解在于如果连续两次调用此方法,则第二次返回false,因为连续调用两次的结果可能不一样
  • public boolean isInterrupted()
    • 实例方法
    • 判断当前线程是否被中断(通过检查中断标志位)

public boolean isInterrupted() 和 public void interrupt() 的区别

  Thread.interrupted();//静态方法
  Thread.currentThread().isInterrupted();//实例方法

    /**
     * Tests if some Thread has been interrupted.  The interrupted state
     * is reset or not based on the value of ClearInterrupted that is
     * passed.
     */
    private native boolean isInterrupted(boolean ClearInterrupted);

上面isInterrupted 方法清晰的表达了“中断状态将会根据传入的ClearInterrupted参数值确定是否重置”

从上图看出静态方法和实例方法 底层都调的isInterrupted(boolean ClearInterrupted)方法 只不过一个传的是false 不需要清理打断状态 一个传的是true 需要清理打断状态

posted @ 2024-01-21 17:54  KwFruit  阅读(16)  评论(0编辑  收藏  举报