码迷,mamicode.com
首页 > 其他好文 > 详细

AQS -> AbstractQueuedSynchronizer

时间:2018-02-24 13:06:04      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:nod   shu   ued   共享锁   UI   延迟   bool   操作   except   

  前言 :

  先说说这个 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

标签:nod   shu   ued   共享锁   UI   延迟   bool   操作   except   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!