
Java锁
文章平均质量分 94
晴天的空间
这个作者很懒,什么都没留下…
展开
-
Java锁(三):Semaphore共享锁详解
一、基于AQS实现的锁AQS(AbstractQueuedSynchronizer) 是Java并发包JUC中非常重要的一个类,大部分锁都是基于AQS实现的,主要实现的类如下:ReentrantLock:可重入锁,独占锁,实现了公平锁和非公平锁,这个是上篇内容介绍的类,也是最常用类,通常会和synchronized作比较。ReentrantReadWriteLock:读写锁,可共享也可独占锁,读是共享锁,写是独占锁,也实现了公平锁和非公平锁。Semaphore:信号锁,共享锁,也实现了公原创 2022-03-29 21:48:31 · 2718 阅读 · 0 评论 -
Java锁(二):AbstractQueuedSynchronizer、ReentrantLock详解
一、AbstractQueuedSynchronizer简介AQS(AbstractQueuedSynchronizer)是并发容器JUC(java.util.concurrent)下locks包内的一个抽象类,是一个同步器,是用来构建锁或者其他同步组件的基础框架,内部维护了一个成员变量state表示同步状态,state=0表示线程未获取到锁,state > 0表示获取到锁,state > 1表示重入锁的数量,被 volatile修饰保证了可见性,通过CAS操作对其修改,内置维护了FIFO队列原创 2022-03-28 13:21:43 · 611 阅读 · 0 评论 -
Java锁(一):volatile、synchronized详解
一、锁的基础知识锁的类型锁从客观上分为悲观锁和乐观锁。乐观锁:乐观锁是一种乐观思想,认为写少读多,遇到并发写的可能性比较低,读数据的时候认为别人不会修改,所以读的时候不会上锁,但是在写的时候会判断一下在此期间有没有别人去更新这个数据,采取的是先读取当前版本号,然后加锁操作,写完的时候读取最新版本号做记录的版本号做比较一样则成功,如果失败则重复读-比较-写的操作。Java中的乐观锁基本都是通过CAS操作实现的,java.util.concurrent.atomic包下的原子变量。CAS(compare原创 2022-03-26 14:16:32 · 2504 阅读 · 0 评论