我们经常会用锁机制来处理多线程的并发,本文就来讨论下悲观锁和乐观锁这两个非常常用的概念。
悲观锁
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为有人会修改,所以每次在拿数据的时候都会上锁,这样其他线程想拿这个数据就得等它解锁。共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。
什么是乐观锁什么是悲观锁?
CAS算法
CAS与synchronized的使用情景
很多软件和服务都支持乐观锁的功能,例如Redis中的watch就是其中之一。Redis watch 命令用于监视一个或多个 key。如果在事务执行之前,发现key 被其他命令所改动,那么事务将被打断。通过这种乐观锁的实现方式,我们也可以保证数据的安全。
今天的内容就先到这里了,小编在此就不做过多的介绍了,想了解更多的Java知识可以关注小编!