目录

  • 乐观锁/悲观锁
  • 公平锁/非公平锁
  • 可重入锁/不可重入锁
  • 自旋锁
  • 偏向锁/轻量级锁/重量级锁
  • 独享锁/共享锁
  • 分段锁

乐观锁/悲观锁

乐观锁:每次读数据的时候都认为别人不会修改,所以不上锁,只有在写的时候判断一下别人有没有修改过。

悲观锁:每次读数据的时候都认为别人会修改,所以都上锁,这样别人读数据需要阻塞等待拿到锁。

公平锁/非公平锁

公平锁:先等待的线程先获得锁。

非公平锁:随机唤醒线程。

tips:

可重入锁中:

ReentrantLock可通过构造方法指定生成公平锁或者非公平锁。

Synchronized为非公平锁。

可重入锁/不可重入锁

可重入锁:同一个线程,可以上两次锁就是可重入锁,其他线程想上锁进入阻塞状态。

不可重入锁:同一个线程只能上一次锁,若二次上锁则造成死锁。

自旋锁

自旋锁:尝试获取锁的线程不会立即阻塞,而是采用循环的方式尝试获取锁。

偏向锁/轻量级锁/重量级锁

锁的升级过程:无锁->偏向锁->轻量级锁->重量级锁

偏向锁:如果一段同步代码一直被一个线程访问,那该线程会自动获取锁。

轻量级锁:当锁是偏向锁时,被另一个线程访问,就会升级为轻量级锁,其他线程会通过自选的方式获取锁。

重量级锁:当锁是轻量级锁时,线程自旋一定次数仍未拿到锁,则进入阻塞状态,该锁升级为重量级锁。

独享锁/共享锁

独享锁:一次只能被一个线程持有,比如可重入锁。

共享锁:可被多个线程持有。比如读锁,并发读。

比如:ReentrantReadWriteLock

ReadWriteLock接口的实现,读锁共享,写锁独占。

读读不互斥,读写,写写互斥。

分段锁

分段加锁,根据hashcode确定分段,对该分段加锁。比如ConcurrentHashMap,实现并行插入。

【锁】细数多线程中的十三种锁相关推荐

  1. 《八股文》细数Java线程、并发、锁,温故而知新

    <八股文>细数Java线程.并发.锁,温故而知新 基础 1. 并行.并发有什么区别? 2. 说说什么是进程和线程? 3. 说说线程有几种创建方式? 4. 为什么调用start()方法时会执 ...

  2. 24张图带你彻底理解Java中的21种锁

    本篇主要内容如下: 本篇主要内容 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观 ...

  3. java中怎么判断一段代码时线程安全还是非线程安全_24张图带你彻底理解Java中的21种锁...

    (给ImportNew加星标,提高Java技能) 转自:悟空聊架 本篇主要内容如下: 本篇文章已收纳到我的 Java 在线文档. Github.我的 SpringCloud 实战项目持续更新中. 帮你 ...

  4. 多图带你彻底理解Java中的21种锁!

    作者 | 悟空聊架构 来源 | 悟空聊架构(ID:PassJava666) 本篇主要内容如下: 本篇主要内容 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持 ...

  5. Java中的21种锁

    本篇主要内容如下: 本篇主要内容 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号锁名称应用1乐观锁CAS2悲观锁synchr ...

  6. php反序列化java.long_细数java中Long与Integer比较容易犯的错误总结

    今天使用findbugs扫描项目后发现很多高危漏洞,其中非常常见的一个是比较两个Long或Integer时直接使用的==来比较. 其实这样是错误的. 因为Long与Ineger都是包装类型,是对象. ...

  7. 合成实验中,十三种后处理方法:实验室常用13种后处理方法、故障及解决办法

    合成实验中,十三种后处理方法:实验室常用13种后处理方法.故障及解决办法 1.有机酸碱性化合物的分离提纯 具有酸碱性基团的有机化合物,可以得失质子形成离子化合物,而离子化合物与原来的母体化合物具有不同 ...

  8. java中的几种锁(很详细)-小白收藏

    最近学习java中的几种锁,看到比较详细的一篇,先转发,后续补充自己的见解 其实如果按照名称来说,锁大概有以下名词:  自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁 ,互斥锁 ,悲观锁 ,乐 ...

  9. 细数T-BOX中TI的明星产品之 线性稳压器 | 第五节TPS7B7701-Q1:为车载应用保驾护航

    汽车新热点:细数T-BOX中TI的明星产品(进行中) Interface PHY 第一节     DP83TC811S-Q1:车载以太网让您的T-BOX如虎添翼 CAN 第二节   TCAN1042- ...

最新文章

  1. Celery 应用:Application
  2. 做人,你想过这四个致命的问题吗
  3. 使用Json.NET来序列化所需的数据
  4. Qt Creator创建一个移动应用程序
  5. QPW 点评阅读日志表(tf_appraise_read_log)
  6. spring-boot两小时入门笔记
  7. 区块链,到底是美好未来还是题材炒作?
  8. @suppressWarnings解释
  9. 监控指标分类汇总归纳
  10. 当关闭winform窗体时触发
  11. 超像素分割算法SLIC的matlab实现
  12. 免费的固定资产管理软件|免费的固定资产管理软件哪个好?
  13. cad插入块_CAD图块全攻略:别羡慕我下班早,我的CAD软件会开挂
  14. 使用来自文件“***.snk”的公钥对输出签名时出错
  15. Qt程序无响应 原因总结
  16. linux c 操作word文档,C and Word and linux 总结.doc
  17. 网络安全用什么编程语言_网络安全的5种最佳编程语言
  18. 怎样进行https证书检查
  19. 集成电路(芯片 ic chip)详解
  20. ABP 多租户 对应多数据库 租户启动报错

热门文章

  1. 第七十二期:爬虫爬的好,牢饭吃到饱?
  2. 嵌入式ARM汇编详解(持续更新)
  3. ipad分屏功能怎么用_手机短信回收站功能怎么用
  4. 游戏策划游戏研发必读经典题文三
  5. 坐标系与参数方程的考向整理【三轮总结】
  6. 电子商务大数据分析中数据分析的重要性
  7. 汉语言文学在电视新闻解说词的应用
  8. 长江商学院许成钢:人工智能从根本上是经济学模型
  9. GridView BaseAdapter设置四宫格的一些问题
  10. 易游网吧无盘服务器安装,易游无盘安装教程