java并发编程--05(AQS)

1.什么是AQS? 并发容器里面的同步器

  • AQS使用Node实现FIFO队列,可以构建其他的锁或者同步装置的基础框架,AQS其实就是一个可以给我们实现锁的框架。

  • 内部实现的关键是:先进先出的队列(CLH队列(三个名字组成),是一个双向队列)、int类型的state表示状态。

  • 使用方式是继承,子类实现方法(acquire,release)来管理他的状态。

  • 定义了内部类ConditionObject

  • 拥有两种线程模式,可以同时实现排他锁和共享锁模式

    • 独占模式

    • 共享模式

  • 在LOCK包中的相关锁(常用的有ReentrantLock、 ReadWriteLock)都是基于AQS来构建

  • 一般我们叫AQS为同步器

2.AQS架构

         

扫描二维码关注公众号,回复: 10102940 查看本文章

 3.AQS同步组件

   CountDownLatch

   Semaphore

   CyclicBarrier

   ReentrantLock

   Condition

   FutureTask

 4.并发容器

    之前所学的同步容器不是线程安全的,不能做到线程安全

   ArrayList===>CopyOnWriteArrayList

    CopyOnWriteArrayList如果数据比较多的情况,极耗内存,因为拷贝导致 young full GC,不能用作实时读取数据,实时性能差,适合读多写少,如果不确定数据有多少就要慎用。

 HashMap ===> ConcurrentHashMap

 TreepMap===>CurrentSkipListMap 速度不快,但是key有序,支持超高并发,比ConcurrentHashMap支持的并发高

 HashSet===>   CopyOnWriteArraySet

 TreeSet===>  ConCurrentSkipListSet

  

          

        

发布了217 篇原创文章 · 获赞 70 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/103225999