一些常用锁分类

公平锁,非公平锁
公平锁:先来后到
非公平锁:谁牛逼谁先拿

乐观锁,悲观锁
悲观锁: 看你不爽,我就锁你
乐观锁:采用版本号和时间戳 来实现

读写锁:读允许多个线程。写一个线程并且不允许读线程

排他锁:同时只能有一个线程获得锁,例如 synchronized

可重入锁:自己锁住了,自己还能再次获得自己的锁
非重入锁:自己锁住了,不能获得自己的锁

java会涉及到锁的升级(为了节约从用户态变成核心态消耗的开销)

一开始无锁 启动 6秒在上偏向锁,把当前threadID写入对象的64bit的makeworl里面
又来了线程-》判断threadID是不是一致
没有:上偏向说 一致:不变 不一致:升级轻量级锁
把makeworld复制一份到线程栈,然后获得轻量级锁。
谁先复制完成就谁先强到。
后面来的 就自旋 cas 空转 等待获取锁,假如自旋次数过了某个阈值,或者等待线程数超过了核心数二分之一
升级重量级锁

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容