知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。
1. CAS (compare and swap) 是一种乐观锁。旧值,新值,预期值比较交换操作,一种非阻塞自旋等待交换的过程。
2. Monitor JVM为每一个Java对象都分配的一个映射对象,随着轻量锁和重量锁的创建同时创建的一种监管对象。
3. synchronized JVM在编译的时候,被编译成了一系列指令来完成。 monitorenter:获取锁,monitorexit:释放锁。
4. 重量级锁 需要从用户态到内核态的切换,开销大。
4.1、CAS操作过程,如果竞争到就把monitor的_owner字段指向当前线程
4.2、检测_owner已经指向当前线程,当前线程再次进入monitor,即重入锁,执行_recursions ++
4.3、线程是第一次进入该monitor,设置_recursions为1,_owner指向当前线程,成功获得锁并返回;
4.4、获取锁失败,自旋到其他线程释放为止;
5. Java 对象模型
6. Java Mark Word 字段