
java并发
主要撰写java并发包下的各种类原理剖析文章
D·罗杰
手握one piece机密的男人
展开
-
ReentrantReadWriteLock源码解析
文章目录简介ReentrantReadWriteLock内部结构ReadLock与WriteLockWriteLock锁获取以及锁释放原理写锁的获取写锁的释放ReadLock锁获取以及锁释放原理读锁的获取读锁的释放总结简介ReentrantReadWriteLock是juc包下的一个读写锁工具类,该类内部维护着一个读锁和一个写锁,通过读锁与写锁的分离使得在读多写少的坏境下性能有了很好的提升,可...原创 2019-11-14 21:47:27 · 440 阅读 · 0 评论 -
ThreadLocalRandom与Random效率对比
ThreadLocalRandom类是jdk1.7在juc包下新增的随机数生成器,该类继承于Random类,那既然有Random随机数生成器了,为什么在jdk1.7的时候又新增一个呢?,这是因为Random在多线程坏境下的效率并不理想,在多线程下使用存在局限性,所以为了提高多线程坏境下随机数生成的效率引入从而了ThreadLocalRandom类。我们先来一个例子来对比下这两个类效率。@Sta...原创 2019-11-11 21:39:28 · 978 阅读 · 0 评论 -
Semaphore信号量源码解析
简介Semaphore(信号量)是juc包下的一个工具类,主要是用来控制同时访问公共资源的线程数,这个数量在Semaphore中叫做凭证数(acquires),内部是采用AbstractQueuedSynchronizer去实现的,AbstractQueuedSynchronizer是一个同步队列,juc包下有许多工具类都依赖于该类去实现功能,例如ReentrantReadWriteLock、C...原创 2019-11-11 21:15:02 · 533 阅读 · 0 评论 -
LongAdder类源码解析
LongAdder其实是AtomicLong的升级版,AtomicLong在多线程下会导致较多的自旋重试,主要原因还是因为多线程同时cas同一个变量的时候失败次数较多,那LongAdder的出现就是为了解决AtomicLong在多线程坏境下的痛点。 首先分析源代码之前我们先抛出以下几个问题:LongAdder如何解决AtomicLong的痛点?LongAdder内部维...原创 2019-11-11 20:43:11 · 303 阅读 · 0 评论