悲观锁和乐观锁有哪些?请举例
时间: 2023-04-02 08:00:34 浏览: 234
乐观锁与悲观锁
悲观锁和乐观锁是并发控制中的两种不同的策略。悲观锁认为并发访问的情况下,数据很可能会被其他线程修改,因此在访问数据时会先加锁,保证数据的独占性,等操作完成后再释放锁。而乐观锁则认为并发访问的情况下,数据很少被其他线程修改,因此在访问数据时不加锁,而是在更新数据时判断是否被其他线程修改过,如果没有则更新成功,否则返回错误信息。
举例来说,一个银行账户的余额是100元,同时有两个线程A和B要进行取款操作,A线程要取50元,B线程要取30元。如果使用悲观锁,A线程在取款前会先加锁,保证其他线程不能同时访问该账户,等A线程取款完成后再释放锁,B线程再进行取款操作。如果使用乐观锁,A线程在取款前不加锁,而是先读取账户余额,判断余额是否足够,如果足够则进行取款操作,否则返回错误信息。B线程同样进行类似的操作,如果A线程先进行了取款操作,B线程再进行取款操作时会发现余额不足,返回错误信息。
阅读全文