乐观锁和悲观锁
乐观锁:乐观锁就是会保持一个乐观的心态,觉得数据是不会被修改的,就不会上锁,如果被修改了就从新再来,但是它在更新的时候会判断一下在此期间被人有没有对这个数据进行更新操作。乐观锁适用于多读的应用类型,能提高吞吐量。乐观锁使用CAS实现。
为了防止并发问题,就会加入CAS的校验过程,保证了线程的安全,但是看场景使用,并不是适用所有场景,他的优点缺点都很明显。
悲观锁:悲观锁就是会对所有的使用他数据的人进行提防,总是以为别人拿了数据就进行修改,所以他每次都会对数据进行加锁,这样别人想拿这个数据就会阻塞直到它拿到锁,synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。