![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 95
Lyzxii
积累,进步;
展开
-
AQS和ReentrantLock源码解析
谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。 AQS实现原理 基本介绍 AQS内部通过维护一个状态:volatile int state(共享资源),一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)来实现同步功能。使用vo原创 2021-04-26 14:14:51 · 163 阅读 · 0 评论 -
JAVA中的CAS
了解java中锁的类型 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传...转载 2018-07-30 17:48:19 · 7786 阅读 · 1 评论 -
并发之CyclicBarrier的使用
CyclicBarrier 意思是:环形栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。 示意图如下: 1.CyclicBarrier的构造方法 public CyclicBarrier(in...原创 2018-08-06 11:06:58 · 914 阅读 · 0 评论 -
并发之Semaphore的使用
Semaphore 意思是信号量,Semaphore可以控制某组资源同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。类似于锁,Semaphore类位于java.util.concurrent包下 Semaphore构造器: public Semaphore(int permits) { //参数permit...原创 2018-08-06 11:32:28 · 591 阅读 · 0 评论