Java常见技术分享-12-多线程安全-锁机制

我觉得之前的学习都太散了, 这样记,实际上我们的对于多线程知识的记忆并不长久。 太碎片了。

那么如果我在每一个分享前 ,都先给上一个多线程知识点的思维导图。

当你遇到问题的时候, 可以先回想思维导图, 再按照具体模块 往下思考。 这样记忆我理解就更符合人类的脑子。 但是假如我直接丢一张完整的,详细的思维导图出来, 我想有一部分人会跟我一样, 直接跑, 一点看的想法都没有, 所以我接下来会根据知识板块的不同一点点补充知识树。 今天要讲的是锁机制, 这是 多线程安全的 最基础的知识。

只有了解了 锁机制, 后面讲什么样的场景, 用什么样的锁, 而这些锁 有哪些已经实现好的 工具类 可以用, 你才有一个基础的认知。

锁机制-锁的作用

锁的存在主要就是用来解决多线程或者多进程并发访问共享资源时的冲突问题。 保证共享资源 或者说 共享变量 的 一致性 和 完整性 。

省流: 解决多线程 并发 访问 共享资源 的 冲突问题。

锁机制-锁的分类

锁的分类并不是唯一的。

并发策略区分

悲观锁 觉得并发冲突的概率 高, 所以直接锁住资源, 像 synchronized.

乐观锁, 先假设不冲突, 用版本号 或者 CAS 来检测。

资源访问权限

互斥锁/独占锁/排他锁, 同一时间 只能有一个线程用。

共享锁, 同一时间 多个线程占用

例子读写锁 , 读多写少的场景 读共享, 写互斥 ,像ReadWriteLock.

公平性区分

公平锁 , 线程按照请求的顺序拿锁,。

非公平锁, 不按照顺序, 能插队, 性能好点。

线程调度

自旋锁, 线程不阻塞, 循环等锁释放。 占CPU, 但是没有线程切换的开销,适合锁占用的时间短。

阻塞锁, 拿不到锁就阻塞, 不占CPU。有线程切换的开销

作用范围

对象锁, 管在单个对象的实例

类锁, 管整个类的所有实例。

分布式锁, 管不同进程和机器间的资源竞争。

可重入性区分

可重入锁,一个线程获取锁之后, 能够再次进入同一把锁保护的同步代码块, 不会自己把自己锁死。

不可重入锁, 刚好相反, 在递归的场景 很容易自己锁自己, 造成死锁 。

下一篇会了解锁的底层实现原理 核心。

相关推荐
奋斗的阿狸_19867 分钟前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
夜之眷属21 分钟前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
weixin1997010801622 分钟前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存
波加曼大王23 分钟前
# vLLM不要迷信PagedAttention神话,聊聊线上藏着的内部碎片陷阱
java·架构
SL_staff28 分钟前
目标健康度自检清单:开发者视角下的目标-计划-任务链路断点诊断
java·开源·github
for_ever_love__31 分钟前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
神仙别闹33 分钟前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
ACP广源盛1392462567335 分钟前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
布吉岛的石头42 分钟前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer
niucloud-admin1 小时前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言