乐观锁和悲观锁的理解
乐观锁和悲观锁是行业内给他定义的,不是实际存在的;实质是java按照是否对资源进行加锁分为乐观锁和悲观锁;
悲观锁:就是一种悲观思想,总认为最坏的情况发生,认为数据很可能会被其他人修改,所以悲观锁在持有数据的时候总会吧资源或者数据锁住,这样其他线程想请求这个资源时就会堵塞,直到等到悲观锁把资源释放为止;传统的关系型数据库很多就运用到了这种锁的机制,比如行锁,表锁,读锁,写锁等,都是在做操作之前先上锁。悲观锁往往依靠数据库本身的锁就能实现。
乐观锁:与悲观锁相反,他总认为资源和数据不会被他人修改,所以读取不会上锁,但是乐观锁在进行写入操作的时候会判断当前数据是否被修改过。乐观锁实现方案:版本号机制和CAS。
版本号机制:就是说在数据表中加上version字段来实现的,表述数据被修改的次数,党执行写操作后,并成功接入,version=version+1。
CAS:Comepare and swap(交换与比较),是一种有名的无锁算法。即不使用锁的情况下实现多线程之间的变量同步。
作者:同城少年
-------------------------------------------
个性签名:选择比努力更重要
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

浙公网安备 33010602011771号