底层实现原理
1.volatile的应用
定义:Java 编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致地更新,
线程应该通过排他性单独获得这个变量。
如果一个字段使用volatile修饰,Java 线程内存模型确保所有线程看到这个变量的值是一致的。其生成的汇编指令
包含Lock前缀,实现原理:
1)Lock前缀指令会引起处理器缓存回写到内存
2)一个处理器的缓存回写到内存会导致其他处理器的缓存失效
优化:针对高速缓存行宽度
2.synchronized的应用
无锁状态
偏向锁
轻量级锁
重量级锁
3.原子操作的实现原理
缓存锁定
总线锁定