java多线程
1.synchronized&Lock.lock() 基于对象监视+队列
2.Atomic* 基于CAS
缺点:
- 出现资源争用
- 相对来说比较占Cpu周期
- 出现aba问题
3.volatile,基于CPU Lock指令,一旦被修改,其他线程里的该对象地址会失效需要重新获取。保证了值的最新。
4.volatile的使用优化,独占cache line的对象。避免False sharing
1.synchronized&Lock.lock() 基于对象监视+队列
2.Atomic* 基于CAS
缺点:
3.volatile,基于CPU Lock指令,一旦被修改,其他线程里的该对象地址会失效需要重新获取。保证了值的最新。
4.volatile的使用优化,独占cache line的对象。避免False sharing