zoukankan      html  css  js  c++  java
  • Java中的锁之乐观锁与悲观锁

    1、  分类一:乐观锁与悲观锁

      a)悲观锁:认为其他线程会干扰本身线程操作,所以加锁

                            i.具体表现形式:synchronized关键字lock实现类

      b)乐观锁:认为没有其他线程会影响本身线程操作,所以不加锁

                            i.具体表现形式:java的原子类的递增操作

                           ii.原理:采用cas算法

      c)Cas算法:交换与比较

                            i.涉及三个数:需要读写的内存值V,进行比较的值A,要写入的新值B

                           ii.具体操作:若A=V,就用B更新V,否则不进行任何操作

                          iii.会用ABA问题:cas算法需要判断内存值V是否发生变化,如果a值变成b值然后又变回a值,cas算法就会无法判断,产生错误。解决上问题:在变量前添加版本号,将aba变成1a2b3c

                          iv.循环时间长开销大,因为自旋需要消耗cpu

                           v.只能保证一个共享变量的原子操作

    2、  分类二

      a) 重入锁:支持重进入的锁,排它锁

    3、  分类三

      a)读写锁:一对锁,读锁,写锁,在同一时刻允许多线程访问

  • 相关阅读:
    ●表单元素
    ●HTML网页标签2
    ●数据库的备份
    ●HTML网页标签1
    ●索引、视图、游标
    ●SQL编程
    ●关系数据库基础
    ●常用函数
    ●SQL练习题
    ●SQL高级查询
  • 原文地址:https://www.cnblogs.com/chenzhuantou/p/10151981.html
Copyright © 2011-2022 走看看