volatile和synchronized

112 阅读1分钟

sychronized实现过程:

  1. java代码:sychronized
  2. monitorenter和moniterexit
  3. 执行过程中自动锁升级 (偏向锁、自旋锁、重量锁)
  4. lock cmpxchg汇编

volitale如何解决指令重排:

  1. volitale
  2. ACC_VOLITALE
  3. JVM内存屏障
  4. hotspot中的lock;锁总线