zoukankan      html  css  js  c++  java
  • Coarse-Grained lock 粗粒度锁

    • 用一个锁Lock一组相关的对象
      • 有时,需要按组来修改多个对象.
      • 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
      • 为每一个对象都加上一个锁是很繁琐的.
      • 粗粒度锁是覆盖多个对象的单个锁.
        • 简化了加锁行为.
        • 且不必为了给它们加锁而加载所有对象.
    • 运行机制
      • 为一组对象建立一个控制点.
        • 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
          • 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
          • 需要在模型中指定该组的每个对象.
          • 共享的悲观离线锁要求组中每个对象共享某种锁标记.
            • 通过这个锁标记来锁住它们.
            • 一个共享的版本对象就是最好的锁标记.
        • 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
          • 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
          • 以及定义聚集中包含了什么的边界对象.
          • 锁住根对象的根锁提供了聚集的单一控制点.
          • 需要为聚集对象提供到根对象的导航方法.
    • 使用时机
      • 最明显的理由是为了满足业务需要.
      • 好处是以很小的代价来获取和释放锁.
    • Implicit Lock隐含锁
      • 允许框架或层超类型获取离线锁.
        • 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
      • 运行机制
        • 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
        • 第一步是列出业务事务中那些任务必须在加锁情况下完成.
  • 相关阅读:
    Spring Boot 入门实战(7)--JdbcTempalte、Mybatis、动态数据源及 Atomicos 整合(XA 事务)
    L1-058 6翻了 (15 分)
    L1-057 PTA使我精神焕发 (5 分)
    L1-056 猜数字 (20 分)
    L1-055 谁是赢家 (10 分)
    L1-054 福到了 (15 分)
    L1-053 电子汪 (10 分)
    L1-052 2018我们要赢 (5 分)
    L1-051 打折 (5 分)
    L1-050 倒数第N个字符串 (15 分)
  • 原文地址:https://www.cnblogs.com/robyn/p/3528316.html
Copyright © 2011-2022 走看看