悲观锁:对于悲观锁,认为数据发生并发冲突的概率很大,读操作之前就上锁。synchronized关键字、ReentrantLock都是悲观锁的典型。
乐观锁:先比较再设置。认为数据发生并发冲突的概率比较小,读操作之前不上锁。等到写操作的时候,再判断数据在此期间是否被其他线程修改了。如果被其他线程修改了,就把数据重新读出来,重复该过程;如果没有被修改,就写回去。判断数据是否被修改,同时写回新值,这两个操作要合成一个原子操作,也就是CAS
悲观锁:对于悲观锁,认为数据发生并发冲突的概率很大,读操作之前就上锁。synchronized关键字、ReentrantLock都是悲观锁的典型。
乐观锁:先比较再设置。认为数据发生并发冲突的概率比较小,读操作之前不上锁。等到写操作的时候,再判断数据在此期间是否被其他线程修改了。如果被其他线程修改了,就把数据重新读出来,重复该过程;如果没有被修改,就写回去。判断数据是否被修改,同时写回新值,这两个操作要合成一个原子操作,也就是CAS
本文标题:31.悲观锁与乐观锁
本文链接:https://www.haomeiwen.com/subject/yosfaltx.html
网友评论