写点什么

锁机制

作者:卢卡多多
  • 2022 年 6 月 10 日
  • 本文字数:596 字

    阅读完需:约 2 分钟

锁机制

今天是六月 8 号,是一个电商促销的大节日,这个节日来源是京东 618 节日对于很多场景我们都很熟悉,因为我们可以遇到很多来自于节日的推送消息,


今天就接着来聊聊关于经典面试时候的一些东西,这次聊得主题就是锁


线程开始--当前获取到锁资源的这个线程


最先开始可能是无锁的状态,先判断一下


> 优先之前获取过锁资源线程-----的偏向锁


如果没有获取成功--升级成为一个 轻量级的 CAS 的乐观锁


比较并交换的一个过程,如果没有设置成功,会进行一个自旋,


多次自旋过程后,才会升级成一个 sychronized 的重量级的锁


经过这样可以保证一个锁性能的量化,保证系统数据的最合适的并发


先说一下为什么有锁这个东西?


内存中存储着我们需要的局部或者是静态变量,当多个线程进去之后进行数据交换处理,或者进行数据的操作之后,我们对于数据是未知的, 也不能保证当前线程肯定是执行了,会不会被别的线程抢走,这就导致了,我们需要加一个锁机制,将固定的区域只能允许一个线程进入,


这里我们可以对于多个线程共同或对于变量,使用 volatile 的关键字,禁止指令重排,数据可见性但是不能确定原子性,unsafe 类就可以


数据操作必须是, 对于其他线程是


  • 安全且数据可见的(如果变更,需要通知其他线程)

  • 原子操作,要么成功,要么失败

  • 禁止重排序


指令重排是底层汇编,以及操作系统底层的东西基于这些对于各个语言的梳理,可以将数据整理成语句,从而将语句进行翻译成计算机可以识别的程序执行,这个操作就是指令重排

发布于: 刚刚阅读数: 4
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习 2021年度优质创作者

评论

发布
暂无评论
锁机制_锁机制_卢卡多多_InfoQ写作社区