端午假期卷之线程锁的分类
- 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
公平锁和非公平锁
公平锁
- 公平锁:多个线程按照申请顺序,类似先进先出的顺序,所有线程按照排队循序,去抢占CPU。
非公平锁
- 非公平锁:多个线程同时去访问,灵界资源,去抢占锁。
独享锁和共享锁
互斥锁和读写锁
乐观锁和悲观锁
悲观锁
- 举个例子:我去上厕所,每一次都会把厕所门,给关着。自己在厕所就一个坑,别人不能看见,我比较害羞。其他的人都在都要在外面,等待。外面等待的人可以理解是线程。 synchronized
乐观锁
- 举个例子:上厕所,不一定我要把门关上。外面等待的人 随时可以开门。但是我在坑上坐着,我没有离开坑,外面的等待的人 不停的开门看看我又没有离开那个坑。如果离开,里面有线程去抢占他。就是不断的去尝试
应用:Java中CAS的操作
分段锁
偏向锁,轻量级锁,重量级锁
自旋锁
可重入锁(递归锁)
- 解释一下什么是可重入:一个线程可以重复获取那把锁🔒。也就是第那种递归 调用,可以重复的执行当前方法。
那个类是那种可重入锁:
- ReentrantLock 这个类就是可重入的
- 还有那个关键字:synchronized 他也是可重入的
可重入有什么好处:提高代码的封装性
- 下一篇文章讲讲 ReentrantLock这个类的使用场景