Java并发编程的艺术 第2章 Java并发机制的底层实现原理

2.1 volatile的应用

volatile相对于synchronized的优势?

2.1.1 volatile的定义与实现 (了解)

1. java语言第3版对vollatile的定义

2 volatile的两条实现原则?

  • Lock前缀指令会引发处理器缓存回写到内存。
  • 一个处理器的缓存回写到内存会导致其他处理器的缓存无效

2.1.2 volatile的使用优化

 

2.2 synchronized的实现原理与应用

2.2.1 synchronized在jvm的实现原理?

2.2.2 Java对象头默认存储结构?

锁状态,25bit对象的hashcode,4bit对象分代年龄,1bit是否是偏向锁,2bit锁标志位

Java并发编程的艺术 第2章 Java并发机制的底层实现原理_第1张图片

2.2.2锁的升级与对比

1. 在Java SE1.6,为了减少获得锁和释放锁带来的性能消耗,引入了哪两种锁?

2. 锁有几种状态?偏向锁会在对象头和栈帧中锁记录里存储锁偏向?

无锁,偏向锁,轻量级锁,重量级锁

2.2.3.1 偏向锁

简单测试Mark Word是否存储着指向当前线程的偏向锁。如果测试成功,表示线程获得了锁。如果测试失败,则需要再测试下Mark Word中偏向锁的标识是否设置成1,如果没有设置,则使用CAS竞争锁,如果设置了,则尝试使用CAS将对象头的偏向锁指向当前线程

1.偏向锁的获得和撤销流程

2.关闭偏向锁

 

2.2.3.2 轻量级锁

2.3 原子操作的是实现原理

2.3.1 术语定义

2.3.2 处理器如何实现原子操作

2.3.3 Java如何实现原子操作(锁和循环CAS)

cas机制

https://www.cnblogs.com/myopensource/p/8177074.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java并发编程的艺术)