我只是在尝试理解乐观锁和悲观锁机制,并在https://en.wikipedia.org/wiki/Lock_(database)上找到了它们的定义。
如果我尝试将这些概念与Java相关联,那么是否可以说使用synchronized关键字始终是悲观的,而使用CAS(AtomicInteger
和其他类)始终是乐观的?
我只是在尝试理解乐观锁和悲观锁机制,并在https://en.wikipedia.org/wiki/Lock_(database)上找到了它们的定义。
如果我尝试将这些概念与Java相关联,那么是否可以说使用synchronized关键字始终是悲观的,而使用CAS(AtomicInteger
和其他类)始终是乐观的?
我说同步使用始终是悲观的,而CAS(
AtomicInteger
和其他类)的使用始终是乐观的,这种说法是正确的吗?
是的,你是正确的。
传统的锁机制,例如在Java中使用同步关键字,被认为是锁定或多线程的悲观技术。
乐观的方法就像古老的说法:“宁可得到原谅,也不要事先获得许可”,这里的“更容易”意味着“更有效率”。CAS是一种乐观技术的例子。StampedLock也支持乐观锁定。