摘要:
概述 是一个线程安全的 ,通过内部的 数组和显示锁ReentrantLock来实现线程安全。 的底层也是基于 实现的。 更适合于读多写少的环节。 CopyOnWriteArrayList源码分析 核心属性 它的内部属性也非常的简单,值得注意的是array是通过volatile修饰的。 重要方法分析 阅读全文
摘要:
概述 CyclicBarrier是一个同步辅助类,它允许一组线程相互等待,直到达到某个公共屏障点。并且在释放等待线程之后,CyclicBarrier是可以重复使用的。 简单使用 下面这段代码利用了CyclicBarrier来使得线程创建后相互等待,直到所有的线程都准备好,以此来使多个线程同时执行。 阅读全文
摘要:
概述 CountDownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。简单来说,就是CountDownLatch内部维护了一个计数器,每个线程完成自己的操作之后都会将计数器减一,然后会在计数器的值变为0之前一直阻塞,直到计数器的值变为0. 简单使用 这个例子主要演示了 阅读全文
摘要:
概述 ReentrantReadWriteLock维护了一对相关的锁,它们分别是共享readLock和独占writeLock。关于共享读锁和排他写锁的概念其实很好理解。所谓共享读锁就是一个线程读的时候,其它线程也可以来读(共享),但是不能来写。排他写锁是指一个线程在写的时候,其它线程不能来写或读(排 阅读全文
摘要:
什么是AQS? AQS即 ,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。 AQS支持独占锁(exclusive)和共享锁(share)两种模式。 阅读全文