AQS 底层使用了模板方法模式,你能说出几个需要重写的方法吗?

使用者继承 AbstractQueuedSynchronizer 并重写指定的方法。将 AQS 组合在自定义同步组件的实现中,并调用其模板方法,而这些模板方法会调用使用者重写的方法。

  1. isHeldExclusively() :该线程是否正在独占资源。只有用到 condition 才需要去实现它。

  2. tryAcquire(int) :独占方式。尝试获取资源,成功则返回 true,失败则返回 false。

  3. tryRelease(int) :独占方式。尝试释放资源,成功则返回 true,失败则返回 false。

  4. tryAcquireShared(int) :共享方式。尝试获取资源。负数表示失败;0 表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。

  5. tryReleaseShared(int) :共享方式。尝试释放资源,成功则返回 true,失败则返回 false。

发表评论

后才能评论