端午假期卷之线程锁的分类

112 阅读1分钟
  • 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

公平锁和非公平锁

公平锁

  • 公平锁:多个线程按照申请顺序,类似先进先出的顺序,所有线程按照排队循序,去抢占CPU。

非公平锁

  • 非公平锁:多个线程同时去访问,灵界资源,去抢占锁。

独享锁和共享锁

互斥锁和读写锁

乐观锁和悲观锁

悲观锁

  • 举个例子:我去上厕所,每一次都会把厕所门,给关着。自己在厕所就一个坑,别人不能看见,我比较害羞。其他的人都在都要在外面,等待。外面等待的人可以理解是线程。 synchronized

乐观锁

  • 举个例子:上厕所,不一定我要把门关上。外面等待的人 随时可以开门。但是我在坑上坐着,我没有离开坑,外面的等待的人 不停的开门看看我又没有离开那个坑。如果离开,里面有线程去抢占他。就是不断的去尝试 应用:Java中CAS的操作

分段锁

偏向锁,轻量级锁,重量级锁

自旋锁

可重入锁(递归锁)

  • 解释一下什么是可重入:一个线程可以重复获取那把锁🔒。也就是第那种递归 调用,可以重复的执行当前方法。

那个类是那种可重入锁:

  • ReentrantLock 这个类就是可重入的
  • 还有那个关键字:synchronized 他也是可重入的 可重入有什么好处:提高代码的封装性
  • 下一篇文章讲讲 ReentrantLock这个类的使用场景