![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 55
张岩松本人
小白一个
展开
-
synchronized的实现过程
java代码:加上synchronized字段class字节码:monitorenter与monitorexit指定加锁的代码的范围执行过程中,锁会升级(无锁-偏向锁-自旋锁-重量级锁)汇编语言:使用lock-cmpxchg实现原创 2021-10-05 17:00:22 · 88 阅读 · 0 评论 -
java锁升级的过程
锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)一、锁升级为什么要引入偏向锁?因为经过HotSpot的作者大量的研究发现,大多数时候是不存在锁竞争的,常常是一个线程多次获得同一个锁,因此如果每次都要竞争锁会增大很多没有必要付出的代价,为了降低获取锁的代价,才引入的偏向锁。偏向锁的升级当线程1访问代码块并获取锁对象时,会在java对象头和栈帧中记录偏向的锁的threadID,因为偏向锁不会主动释放锁,因此以后线程1再次获取锁的时候,需要比较当前线程的thr原创 2021-10-05 16:45:12 · 2509 阅读 · 0 评论