首页 > 其他 > 详细

AQS -> AbstractQueuedSynchronizer

时间:2018-02-24 12:16:07      阅读:229      评论:0      收藏:0      [点我收藏+]

  前言 :

  先说说这个 CLH锁:

   加锁

     1. 创建一个的需要获取锁的 Node

     2. 通过 CAS操作 让自己 成为这个尾部的节点,然后令 设置自己的pre

        3. 自旋,直到pre节点释放

   释放:

     1. 标记自己的状态为释放.

 正文:

  什么是在java里 AQS 是一个 抽象的同步队列.是的他是一个抽象类,他的子类要么用它实现了共享锁,要么实现了互斥锁.

  也因此,在他的主类里 并没有实现 protected boolean tryAcquire(int arg) { throw new UnsupportedOperationException(); } 这个方法, 延迟到子类.以实现区别.

       简单的说AQS 通过CAS维护 一个  <volatitle int state, exclusiveOwnerThread> 在表示目前是否有线程,以及哪个线程获取到了锁.

    具体的入队,出队.代码分析我写在这里 http://www.cnblogs.com/shuly/p/7235997.html

 

AQS -> AbstractQueuedSynchronizer

原文:https://www.cnblogs.com/shuly/p/8464508.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!