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