- 博客(4)
- 资源 (15)
- 收藏
- 关注
原创 并发编程工具 - CountDownLatch、CyclicBarrier多线程步调协调器
目录CountDownLatch【一个线程等待多个线程的场景】CyclicBarrier【一组线程之间互相等待,计数器可以循环利用】CountDownLatch【一个线程等待多个线程的场景】 用于协调一个线程等待一组线程的情况,内部类Sync基于AbstractQueuedSynchronizer的共享模式实现。构造器要求传入需要协调的个数(一般一个对应一个线程,即一次countDown方法调用),与Semaphore一样传入的数值会赋值为AQS的state字段,理解完上片的Semap..
2020-12-04 19:45:24 309
原创 并发编程工具 - Semaphore信号量
目录信号量模型juc Semaphore结构使用Semaphore实现限流器 早在1965就提出了信号量作为解决并发编程的解决方案,直到1980年之后才使用管程模型来解决并发问题(Java选择了MESA管程模型),并且管程能实现的功能使用信号量都能实现,基本所有的编程语言都支持信号量的方式,而Java中juc Semaphore就是该实现。作为非科班出生,自己认为了解并发编程的历史非常的重要。信号量模型 一个计数器,一个等待队列,三个方法。信号量模型里,计数器和等待队列对...
2020-12-03 19:59:21 228
原创 并发编程工具 - StampedLock(比读写锁性能更高的锁)
前面一篇已经分析了针对读多写少的安全并发读写的场景,但是如果写相对较多时,对读是互斥的。为了进一步提升读写锁(ReentrantReadWriteLock)的性能,加上乐观锁的思想那么StampedLock就产生了。...
2020-12-03 17:04:56 357
原创 并发编程工具 - ReentrantReadWriteLock读写分离可重入锁、项目上的使用
ReentrantLock本身是一个独占锁,与优化后的synchronized在并发性能上没有太多的优势,所以需要分场景优化。基于读写分离的思想(比如mysql的一主多从,读写分离)那么ReentrantReadWriteLock就诞生了,只有读与写同时发生时需要互斥,读与读之间是安全的。那么就是AQS的独占和共享模式。具体看看其结构:项目上的使用,数据本身不多,并且修改也是基本不会发生。但是为了防止数据改变之后,还需要重启...
2020-12-01 14:03:43 371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人