• java 锁


                  ------------------------------ 时间不多了, 抓紧做你喜欢做的事情

    为什么会有锁这个东西?

      因为在并发场景发生的时候,如果多个线程操作同一个数据,可以会造成数据出现异常问题.

      如: 同时 线程A 操作数据 data + 1, 线程B 操作数据data + 1, 那么这个数据最终为data + 1 ,出现问题了

    锁到底是个什么东西?

        通过上面的话,可以知道锁其实上是一种并发情况下保证数据的原子性的思想,

        是一种保持数据原子性的方式。  

     

    从设计思想划分锁,主要分为两类: 悲观锁 、 乐观锁

    常见的Sychronized 就是一个悲观锁, Lock 的 ReentrantLock 就是乐观锁

    什么是悲观锁?

        针对并发场景, 悲观锁认为其他的线程一定会修改我要操作的数据,所以我在修改数据的

       过程中可能会出现问题,所以悲观锁就很霸道的说,我在操作数据的时候,其他的线程不允许

       操作我的数据,只有在我操作完数据之后,其他线程才可以操作数据。

     

    悲观锁的实现机制是什么?

        它是基于数据库锁的机制实现的

     

    什么是乐观锁?

         针对并发场景,乐观锁认为其他的线程一般不会修改我要操作的数据,所以没有像悲观锁那样

         将数据的控制权抓在自己手里,而是每次在操作数据的时候,会去先比较现在数据库的数据有没有

         发生变化(即比较数据库中的数据和我预期的数据是否一致, 这里的一致性,不仅仅指的是数值上面

         的一致性,时间上也是一致的,只能是原来的不变的那个数据,比如A 操作了数据),如果没有发生

         变化则更新数据,如果发生变化, 则重新读取数据,再次执行操作。

     

    乐观锁的实现机制是什么?

         它的实现机制是基于版本的。

     

    还有很多的不足,后面逐渐添加

     

      

      

  • 相关阅读:
    第三周psp
    作业2
    词频统计 SPEC 20170914 1 1 1 1 1
    psp1111
    第一周大作业1
    mongodb安装操作 (2018/11/12)
    中间件 express生成项目(2018/11/10)
    express环境搭建(2018/11/09)
    后端路由(2018/11/07)
    Node模块的基本使用(2018/11/06)
  • 原文地址:https://www.cnblogs.com/helloqiufei/p/12006517.html
Copyright © 2020-2023  润新知