偏向锁小计
1. 线程进来先CAS将自己的线程设置到锁对象的markWord中,如果设置成功,不加锁直接执行
2. 后面有其他线程来竞争,将当前偏向的线程挂起,并清除markword标记,升级为轻量级锁

优点:
用户大部分场景是单线程运行的,所以不加锁性能更高
缺点:
如果场景中竞争比较大,则会导致频繁的清除markword标记,然后升级锁,导致性能损耗
所以JVM在运行启动程序时,是在启动后4秒之后才主动开启的偏向锁功能,也就是说,假如你一个main方法启动后,加锁立即运行,会发现并不是偏向锁而是轻量级锁,如果手动sleep5秒在加锁运行,怎会是偏向锁
展开
decode_life于2020-03-18 01:52发布的图片
评论