美文网首页
锁机制——锁的分类及其含义

锁机制——锁的分类及其含义

作者: 全方位小白 | 来源:发表于2020-07-18 23:52 被阅读0次

他总忘不了那样的日子,一个先令就能买到十三只上好的牡蛎。

这一次记录一点并发编程方面的内容——锁机制,也是在某一次课程中听到的。这是一个我之前毫无了解的概念,而并发编程也一直是我不敢触碰的高深知识。今天终于决定踏出第一步。

参考资料:

  1. 偏向锁、轻量级锁、自旋锁、重量级锁
  2. 锁机制-自旋锁、偏向锁、轻量级锁、重量级锁
  3. Synchronized的原理及自旋锁,偏向锁,轻量级锁,重量级锁的区别

锁从宏观上分类,分为悲观锁与乐观锁。

乐观锁
乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。
java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。

悲观锁
悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。
java中的悲观锁就是Synchronized,AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换为悲观锁,如RetreenLock。

锁的重量级别是:偏向锁-> 轻量级锁、自旋锁-> 重量级锁

偏向锁
偏向锁的目标是,减少无竞争且只有一个线程使用锁的情况下,使用轻量级锁产生的性能消耗。
“偏向”的意思是,偏向锁假定将来只有第一个申请锁的线程会使用锁(不会有任何线程再来申请锁)

轻量级锁
轻量级锁的目标是,减少无实际竞争情况下,使用重量级锁产生的性能消耗

自旋锁
首先,内核态与用户态的切换上不容易优化。但通过自旋锁,可以减少线程阻塞造成的线程切换(包括挂起线程和恢复线程)。

  • 当前线程竞争锁失败时,打算阻塞自己;
  • 不直接阻塞自己,而是自旋(空等待,比如一个空的有限for循环)一会;
  • 在自旋的同时重新竞争锁;
  • 如果自旋结束前获得了锁,那么锁获取成功;否则,自旋结束后阻塞自己 ;

可以看到,自旋锁是需要占用CPU的,因此在单核处理器、或是线程数多而核数少的情况下,很可能会造成无用的浪费。

重量级锁
当有两个及以上的线程争用同一个锁,那么轻量级锁就不再有效,要膨胀为重量级锁。

脱离业务场景而单纯去理解它们着实有难度,而写下这句话的时候又突然觉得自己好没有上进心。害,那就尽快掌握吧。

over~

相关文章

  • 锁机制——锁的分类及其含义

    他总忘不了那样的日子,一个先令就能买到十三只上好的牡蛎。 这一次记录一点并发编程方面的内容——锁机制,也是在某一次...

  • (5)锁机制与InnoDB锁算法

    一 锁分类(按照锁的粒度分类) Mysql为了解决并发、数据安全的问题,使用了锁机制。 可以按照锁的粒度把数据库锁...

  • MySQL锁机制和MVCC版本控制

    一、MySQL锁机制 1.1 锁分类 按锁的粒度 划分: 表锁:表锁是粒度最大的锁,开销小,加锁快,不会出现死锁,...

  • iOS底层-- 锁

    手动目录什么是锁锁的工作机制锁的分类设计到锁的其他概念常用锁的用法@synchronized()NSLock信号量...

  • 十一 .Java并发工具

    Java中的锁 锁是一种线程同步机制,类似同步块,但是锁比Java的同步块更复杂。锁(以及其他更高级的同步机制)是...

  • mysql锁与事物隔离级别

    锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制 锁分类 性能:乐观锁与悲观锁 操作:读锁和写锁(都属...

  • MySQL锁详解

    Mysql****锁机制 锁概述 锁分类 MySql锁 目的了解锁的用途了解锁的危害根据锁的一个概述进一步了解优化...

  • 常见锁及其分类

    平常总是看到各式各样的锁类型,但是却没有一个固定或者清晰的分类。这里记录一下平时有见到的讨论的锁类型以及一些典型的...

  • mysql-数据库锁理论概述

    什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制。 锁的分类 从数据操作的类型分为:读锁、写锁1)读...

  • 面试命中率90%!面试官:你知道MySQL锁吗?

    锁分类 当多个事务或进程访问同一个资源时,为了保证数据的一致性就会用到锁机制,在MySQL中锁有多种不同的分类。 ...

网友评论

      本文标题:锁机制——锁的分类及其含义

      本文链接:https://www.haomeiwen.com/subject/cwlqkktx.html