乐趣区

关于java:javaAQSAbstractQueuedSynchronizer

  1. 背景 : 锁的目标是 让不平安的多线程操作变得平安. 计划就是一个一个的来. 锁的概念是 让内部(线程) 进不去, 只能有钥匙的线程能够进去. 那就还须要有一个 管理者, 这个管理者 须要确定哪个线程先进去, 以及当先进去的人进去后, 从排队的线程外面选一个再进去. 这个管理者, 被独自定义成 AQS, AQS 是多线程竞争资源的管理者, 从名称翻译的话, 是协调器.
  2. 利用场景: 如果要自定义锁, 个别做法是在这个锁的类外面, 定义继承 AQS 的实现类, 依据自定义锁的逻辑, 实现独占锁和共享锁的相干办法即可. 例如 Reentrantock 就是这么做的
  3. 根本逻辑: 抽象类 AbstractQueuedSynchronizer 里有一个 int 类型的状态字段 state, 应用这个字段来定义以后锁的状态, 比方 0 示意还没有线程获取到锁,1 示意有一个线程获取到锁, 大于 1 示意是共享锁, 且以后领有该共享锁的线程数是 state
退出移动版