Synchronized原理分析

synchronized 对象

对象相当于一个key,拥有这个key则可以访问,没有则不能访问,key有两种,一个是对象,一种是类

synchronized 代码块的原理


两个基本概念

java对象头:对象内存分为3类:对象头,实例数据和对齐填充;Synchronized锁放在java对象头,从源码上讲,一个java对应一个oop,oopDesc(定义Synchronized锁)

Monitor:独占锁,同步机制 所有java对象都是一种monitor

Synchronized锁升级和获取过程

解决有序性,可见性和原子性

锁的级别从低到高的过程:无锁-->偏向锁-->轻量级锁-->重量级锁

自旋锁:在一定时间内,没有获取锁,就挂起;目的:通过加长占有处理器的时间来减少线程切换带来的开销

偏向锁:在没有竞争的前提起,一个线程多次获取锁;在获取锁的过程中,若对象头有指向当前线程,则表示获取锁成功,若没有,则开始正常的获取锁的流程。

轻量级锁:多个线程竞争偏向锁会升级为轻量级锁

重量级锁:通过monitor来实现


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

相关阅读更多精彩内容

友情链接更多精彩内容