• 用一个锁Lock一组相关的对象

    • 有时,需要按组来修改多个对象.
    • 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
    • 为每一个对象都加上一个锁是很繁琐的.
    • 粗粒度锁是覆盖多个对象的单个锁.
      • 简化了加锁行为.
      • 且不必为了给它们加锁而加载所有对象.
  • 运行机制
    • 为一组对象建立一个控制点.

      • 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
        • 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
        • 需要在模型中指定该组的每个对象.
        • 共享的悲观离线锁要求组中每个对象共享某种锁标记.
          • 通过这个锁标记来锁住它们.
          • 一个共享的版本对象就是最好的锁标记.
      • 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
    • 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
    • 以及定义聚集中包含了什么的边界对象.
    • 锁住根对象的根锁提供了聚集的单一控制点.
    • 需要为聚集对象提供到根对象的导航方法.
  • 使用时机
    • 最明显的理由是为了满足业务需要.
    • 好处是以很小的代价来获取和释放锁.
  • Implicit Lock隐含锁
    • 允许框架或层超类型获取离线锁.
      • 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
    • 运行机制
      • 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
      • 第一步是列出业务事务中那些任务必须在加锁情况下完成.

转载于:https://www.cnblogs.com/robyn/p/3528316.html

Coarse-Grained lock 粗粒度锁相关推荐

  1. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  2. educoder 使用线程锁(lock)实现线程同步_性能:Lock的锁之优化

    Lock / synchronized Lock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁 synchronizedLock实现方式JVM层实现Java底层代码实 ...

  3. java同步锁实例_Java lock同步锁使用实例解析

    这篇文章主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1)Lock是一个接口,而synchroniz ...

  4. Java5线程并发库之LOCK(锁)CONDITION(条件)实现线程同步通信

    为什么80%的码农都做不了架构师?>>>    Lock(锁)&Condition(条件)实现线程同步通信 接下来介绍,java5线程并发库里面的锁.跟锁有关的类和接口主要是 ...

  5. 7.生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信)...

    1 /* 2 * 生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信) 3 * */ 4 public class TestProductorAndConsum ...

  6. oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?

    你有多了解Oracle Enqueue lock队列锁机制? 概念 Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制.   我们耳熟能详的 TM table lock表锁 ...

  7. 深圳Java培训:Lock线程锁

    深圳Java培训:Lock线程锁 1:synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性.那么为什么会出现Lock呢? 在上面一篇文章中 ...

  8. 类锁 synchronized对象锁 和 Lock对象锁

    在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制. 对象锁 所有对象都自动含有单一的锁. JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁的时候 ...

  9. JVM MarkWord与Lock Record 锁

    JVM MarkWord与Lock Record && 锁 MarkWord Lock Record 偏向锁 轻量级锁 重量级锁 Windows中的Mutex Linux中的Mutex ...

最新文章

  1. nginx 解析php漏洞
  2. Linux中的chmod详解
  3. WinXP系统下安装SQL SERVER 2000
  4. 微信小程序setData的回调方法
  5. “JavaSwing” ——简单使用
  6. LeetCode刷题(22)
  7. Android使用BaseAdapter绑定ListView实现不同item的TextView多种文字变色
  8. ICPC North Central NA Contest 2017 E - Is-A? Has-A? Who Knowz-A?
  9. 尝试修改smali码破解App
  10. Java牛客项目课_仿牛客网讨论区_第七章
  11. 基于HTML的旋转立方体的实现
  12. 连续型随机变量单点概率为0以及不可能事件
  13. 时空数据模型类型、优缺点
  14. 《西部世界》,能给现实世界的人工智能带来怎样的狂想
  15. android 广告轮播图片+视频+音频
  16. N-Tiers开发方式(为何使用COM+组件的撰写商业逻辑层)
  17. 手机产业未来的发展方向
  18. K-Net 论文笔记
  19. python中repeat_Python Pandas Series.repeat()用法及代码示例
  20. 《2022元宇宙黑客松》ThreeX专场

热门文章

  1. IBM Machine Learning学习笔记——Time Series and Survival Analysis
  2. 知识图谱入门 , 知识问答
  3. 深度学习之基础知识详解
  4. sublime运行python代码,如何从Sublime Text 2运行Python代码?
  5. python遥感影像分类代码_Python 实现遥感影像波段组合的示例代码
  6. eureka自我保护时间_Eureka的自我保护机制
  7. 如何让地面不起灰_地面不平怎么办?无沙找平的做法
  8. 你应该关注的几个Eclipse超酷插件
  9. hdu 1978 How many ways
  10. ORA-15260 diskgroup space exhausted Problem