cag2050

AQS 抽象队列同步器(Abstract Queued Synchronizer) 知识点

AQS的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态。

AQS使用一个int类型的成员变量state来表示同步状态,当state>0时表示已经获取了锁,当state = 0时表示释放了锁。它提供了三个方法(getState()、setState(int newState)、compareAndSetState(int expect,int update))来对同步状态state进行操作,当然AQS可以确保对state的操作是安全的。

AQS通过内置的FIFO同步队列来完成资源获取线程的排队工作,如果当前线程获取同步状态失败(锁)时,AQS则会将当前线程以及等待状态等信息构造成一个节点(Node)并将其加入同步队列,同时会阻塞当前线程,当同步状态释放时,则会把节点中的线程唤醒,使其再次尝试获取同步状态。

出处:https://juejin.im/entry/5ae02a7c6fb9a07ac76e7b70

分类:

技术点:

相关文章:

  • 2021-07-01
  • 2021-10-09
  • 2021-08-16
  • 2021-12-24
  • 2022-12-23
  • 2021-10-18
  • 2021-06-15
猜你喜欢
  • 2021-09-20
  • 2021-08-11
  • 2022-12-23
  • 2021-10-19
  • 2020-04-09
  • 2022-12-23
  • 2021-03-01
相关资源
相似解决方案