乐观锁(CAS 比较和增加):觉得其他线程在查询时不会对数据发生修改(增加,删除,修改),需要对数据库中的每一条记录后增加一个字段:version(版本号),线程对数据进行修改前会比较自身请求所带的version和数据后的version大小,只有在版本号相同的情况下才可进行修改,如若成功进行了修改,会在版本号基础上加一。后续线程因version的不匹配,会导致无法再次进行修改,因而保证了数据安全。
悲观锁(Pessimistic Lock):觉得每次修改数据时都会有别人进行修改,因而修改的时候会上锁,修改完成会再把锁释放,就好像因为知道不关厕所门就一定会有人打开,上厕所时把单间的门锁上一样。