在Java AQS中,忽略中断和响应中断是什么意思?

在Java的AbstractQueuedSynchronizer类中,有
acquire

acquireInterruptibly
两个方法。

从网上看分别表示「忽略中断」和「响应中断」。

忽略响应这两个字眼很迷,不知道是什么意思。

阅读 4.3k
1 个回答

acquire尝试获取资源,成功则直接返回,不成功则进入等待队列,这个过程不会被线程中断,被外部中断也不响应,获取资源后才再进行自我中断selfInterrupt();

/**
     * Convenience method to interrupt current thread.
     */
    static void selfInterrupt() {
        Thread.currentThread().interrupt();
    }

acquireInterruptibly支持响应中断

public final void acquireInterruptibly(int arg)
            throws InterruptedException {
        if (Thread.interrupted())
            throw new InterruptedException();
        if (!tryAcquire(arg))
            doAcquireInterruptibly(arg);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题