其实很早之前通过一些资料,就对偏向锁稍微有些了解,周六准备看看Hotspot中关于偏向锁的实现,本以为应该畅通无阻,没想到处处都是拦路虎,细节比较多,真是硬着头皮看了一整天,才大概懂了点。笔者还在不断学习,只是想把自己的笔记分享出来,理解能力有限,可能有不正确的地方,还望指正,别让我误导了他人。-潍坊达内负责整理
一:锁的表示
里的锁,主要都是对对象进行加锁,如普通的synchronized非静态方法,就是对当前执行方法的对象进行加锁。那么怎么对对象进行加锁呢?对象的锁其实主要就是通过对象头的markOop进行表示的。markOop其实不是一个对象,只是一个字长的数据,在32为机器上,markOop为32个位,在64位上为64个位。markOop中不同的位区域存储着不同的信息,但是需要注意的一点是,markOop每个位区域表示的信息不是一定的,在不同状态下,markWord中存着不同的信息
二:何为偏向锁
很多情况下,一个锁对象并不会发生被多个线程访问得情况,更多是被同一个线程进行访问,如果一个锁对象每次都被同一个线程访问,根本没有发生并发,但是每次都进行加锁,那岂不是非常耗费性能。所以偏向锁就被设计出来了。
屡屡有个别人会问,说代数差的可学JS吗?信任大部分人都备有这种疑问,解释这种疑问平时,咱可知道份数学题:两地相距800米。滑清从A地以2米每秒的速度向B地走,罗悦远从B地以每秒2米的速度向a走。

请问:他们多久后遇到?遇到的地方离B地有多远?这那便是一道容易初中数学题,潍坊达内培训告诉我们,只是对于代数不好的人,也许要为了很多时间。
只是事实JS并不需要你把计算结果写出,你一定得当心他的悖论思维就行。
不过我自己也感觉,要用JS来解决里面的疑问,你只一定得留意个对咱容易的代数原型︰即加、减、乘、除和求余就行,事实和会背公式有一定像。大部分人没浏览JS的人,都认为代数不好,无法成为程序员。事实代数跟JS的关联可剖析为:精代数者,没有会JS,不精明代数,也能浏览JS,如欲精JS,必精代数,若已精明代数者,学JS不难也。
所以,代数不好也是可学JS,只是会比代数好的人难,要有很大的毅力,日常那便是要多去提升自己的悖论和归纳低压。
偏向,也可以理解为偏心。当锁对象第一次被某个线程访问时,它会在其对象头的markOop中记录该线程ID,那么下次该线程再次访问它时,就不需要进行加锁了。但是这中间只要发生了其他线程访问该锁对象的情况,证明这个对象会发生并发,就不能对这个对象再使用偏向锁了,会进行锁的升级,这是后话,我们这里还是主要讨论下偏向锁。
三:源码探究
我们就以synchronized方法为入口吧。
之前在《JVM方法执行的来龙去脉》中提到过,JVM执行方法最后会以对应的entry_point例程作为入口。entry_point例程不仅会进行java方法栈帧的创建
以上就是潍坊达内给大家做的内容详解,更多关于UI的学习,请继续关注潍坊达内