解决ABA问题:部分乐观锁的实现是通过版本号(version)来解决ABA问题的,每次去修改/更新一个数据时,会带上版本号,一旦版本号和数据的版本号 一致时就会一致就可以执行修改/更新操作,并将版本号+1; 2.多线程竞争时,线程长时间拿不到锁会做无意义的自旋,给CPU资源带来一定程度的消耗。 3.只能保证一个共享变量的原...
先抛出我的结论:用CAS方式获取锁的,并非都是乐观锁。 我们在Java里使用的各种锁,几乎全都是悲观锁。synchronized从偏向锁、轻量级锁到重量级锁,全是悲观锁。JDK提供的Lock实现类全是悲观锁。其实只要有“锁对象”出现,那么就一定是悲观锁。因为乐观锁不是锁,而是一个在循环里尝试CAS的算法。 那JDK并发包里到底...