悲观锁和乐观锁

synchronized和CAS的区别:

相同点:在多线程的情况下,都可以保证共享数据的安全性。

不同点

synchronized总是从最坏的角度出发,认为每次获取数据的时候,别人都有可能修改。

所以在每次操作共享数据之前,都会上锁。(悲观锁)

​ cas是从乐观的角度出发,假设每次获取数据别人都不会修改,所以不会上锁。只不过在修改共享数据的时候,会检查一下,别人有没有修改过这个数据。

​ 如果别人修改过,那么我再次获取现在最新的值。

​ 如果别人没有修改过,那么我现在直接修改共享数据的值.(乐观锁)(乐观锁不是锁

迎风少年
原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13520488.html