美文网首页技术干货
多线程队列同步器AbstractQueuedSynchroniz

多线程队列同步器AbstractQueuedSynchroniz

作者: 程序员爸爸 | 来源:发表于2017-05-13 14:22 被阅读0次

           最近,比较郁闷的是公司一年一度的加薪没有恩泽到我,有了重新换公司的想法,所以多准备一下技术储备,翻起了《Java并发编程的艺术》,看到了Lock的实现基础类,队列同步器即AbstractQueuedSynchronizer,可以理解这个类是学习concurrent包下的多线程类的基础吧。

           队列同步器是用到了设计模式:模板模式。所以使用这个类需要继承它,重写一下他的抽象方法来改变同步状态,getStatus获取同步状态,setStatus,compareAndSetState改变同步状态,因为这些是线程安全操作的。

        那么这个类的作用是什么呢?它供很多的同步组件使用,同步组件比如有ReentrantLock、ReentrantReadWriteLock和CountDownLatch,同步器作为一个内部类,在同步组件中可以独占式或者共享式获取同步状态或者修改。这里得解释下独占式锁:独占锁就是在同一时刻只能有一个线程获取到锁,而其他获取锁的线程只能处于同步队列中等待,只有获取锁的线程释放了锁,后继的线程才能够获取锁。

        下面通过代码来加深一下队列同步器AbstractQueuedSynchronizer在同步组件作用的理解


    //模仿ReentrantLock 实现一个锁

    看完代码,就理解这个队列同步器的作用了,至于同步器的实现,在Java并发编程的艺术这本书都有,内容比较多,有兴趣去读读看。

    相关文章

      网友评论

        本文标题:多线程队列同步器AbstractQueuedSynchroniz

        本文链接:https://www.haomeiwen.com/subject/sduxxxtx.html