偏向锁 ,synchronized相关的

偏向锁加锁过程什么的都了解了点,不过不太清楚底层什么时候使用偏向锁,是不是任何synchronized相关的都是从偏向锁开始的(在开启偏向锁的情况下)。

若是上面的假设成立,synchronized了解到实现原理是与monitor对象有关的,感觉和偏向锁实现原理不太一样(所以上面假设就不对了),是不是这样子的。有没有朋友了解些,帮忙为我指点下迷津。

感谢您的回复。

新版本的JDK比如1.8等,synchronized会有多种锁的优化和升级
JDK 1.6中默认是开启偏向锁和轻量级锁的,我们也可以通过-XX:-UseBiasedLocking来禁用偏向锁。
偏向锁状态,轻量级锁状态和重量级锁状态,它会随着竞争情况逐渐升级

偏向锁用于有同步但无竞争的场景。synchronized并不代表用偏向锁
具体参考这篇文章:http://blog.csdn.net/wolegequdidiao/article/details/45116141

偏向锁可以关闭的,不关闭情况下,首先是偏向锁,如果发生锁竞争,会变为轻量锁,如果再次竞争激烈就会自动变为重量锁

偏向锁信息是记录在对象头中的。当对象处于偏向锁状态时,它的对象头中的_mark字段中会记录它所偏向的线程的指针,因此被偏向的线程访问对象时只需要验证对象头,没有同步操作;

当锁膨胀之后,对象头的_mark字段记录的就是指向锁对象的指针了