![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
锁
林夕风暴
常在江边站,必有望海心
展开
-
java锁:读写锁
独占锁/共享锁独占锁:同一时间内只允许一个线程持有该锁,保证数据一致性,Synchronized/ReentrantLock都是独占锁共享锁:同一时间内允许多个线程持有该锁,多个线程可以操作读写锁: ReentrantReadWriteLock读写锁:写操作是独占锁,读操作是共享锁,写独占保证数据一致性,读共享保证并发性就好比一个成绩单需要签名,但是又可以供多个人一起读,此时同一时...原创 2019-12-31 14:56:49 · 302 阅读 · 2 评论 -
Java锁:自旋锁
自旋锁实现原理(while循环+CAS(compareAndSet))一个锁已经被一个线程锁持有,其他尝试获取该锁的线程并不会立即阻塞,而是采用循环的方式不停地尝试去获取锁,直至获取成功,跳出循环现实生活中的例子:公用洗衣机,一个人想去洗衣服,但是此时洗衣机正在被占用着,那么这个人有两种选择,要么一直在洗衣机前等待,等到该洗衣机洗完,另一种每隔一段时间再回来看看,洗衣机是否已经洗完代码...原创 2019-12-30 13:26:50 · 102 阅读 · 0 评论 -
Java锁:可重入锁(递归锁)
可重入锁也叫递归锁:递归传递同一把锁理解:同一个线程在进入外层同步方法获得锁之后,同样可以进入该外层同步方法中所拥有的内层同步方法,它们此时所拥有的是同一把锁这种设计可以避免死锁(如果不是可重入锁,在进入外层同步方法之后,无法进入该外层同步方法所拥有的内层同步方法,这种情况下就会出现死锁)synchronized/ReentrantLock都是可重入锁代码示例和解释:import j...原创 2019-12-30 10:04:42 · 379 阅读 · 0 评论 -
Java锁:公平锁/非公平锁
Lock锁之公平锁/非公平锁Java中的公平锁和非公平锁是什么?二者区别?公平锁:多线程高并发情况下,线程获得锁的顺序是先到先得,依次获得非公平锁:线程获得锁的顺序是先抢先得,先运行的线程不一定先获得锁,允许加塞,所以结果是不公平的二者区别:公平锁先到先得,非公平锁先抢先得,非公平锁比公平锁的吞吐量会大一些。ReentrantLock和snychronized是什么锁?Reentran...原创 2019-12-25 14:16:13 · 162 阅读 · 0 评论