synchronized关键字的实现原理

在java语言规范中,synchronized的功能是通过monitor实现的,

什么是monitor?

A monitor is mechanism to control concurrent access to an object.
monitor是一种机制,控制多线程对一个对象的并发访问。

java中除了null之外的所有对象都有一个对应monitor,我们知道进入synchronized 代码是先要获得对象的锁,锁就monitor,获得对象的锁就是获得monitor对象的使用权,释放锁就是释放monitor对象的使用权。
synchronized所用的锁存放在Java对象头里。即要获得一个对象的锁就是修改该对象的对象头里面的Mark Wrod 数据,修改成功即获得锁。

jdk1.6优化了synchronized,通过引入偏向锁和轻量级锁减少获得锁和释放锁的开销,优化的思路类似于将之前的重量级锁按开销的大小拆分得更细,从偏向锁–>轻量级锁–>重量级锁,锁在不满足同步条件的情况下会自动升级,开销也会越来越大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值