锁
初衷不悔
不忘初心,加油
展开
-
java 锁 -轻量级锁
2.轻量级锁 (1)轻量级锁加锁 线程在执行同步块之前,JVM会先在当前线程的栈桢中创建用于存储锁记录的空间,并 将对象头中的Mark Word复制到锁记录中,官方称为Displaced Mark Word。然后线程尝试使用 CAS将对象头中的Mark Word替换为指向锁记录的指针。如果成功,当前线程获得锁,如果失 败,表示其他线程竞争锁,当前线程便尝试使用自旋来获取锁。...原创 2019-12-12 15:38:09 · 147 阅读 · 0 评论 -
java锁-偏向锁
偏向锁: HotSpot作者发现,大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获取锁的代价更低,引入了偏向锁,当一个线程访问同步块并获取锁时,会在对象头和栈贞中的锁记录里存储锁偏向的线程id,以后该线程进入和退出该同步块时,不需要进行CAS操作来获取和释放锁,只需简单的测试一下对象头的Mark Word里是否存储着指向当前线程的偏向锁,如果测试成功,表明线程已经获得...原创 2019-12-12 15:33:50 · 443 阅读 · 0 评论