首页 > 其他分享 >设计模式-粗粒度锁(Coarse-Grained Lock)

设计模式-粗粒度锁(Coarse-Grained Lock)

时间:2024-09-04 09:57:39浏览次数:8  
标签:粗粒度 Grained 删除 对象 离线 版本 共享 设计模式

作用

用一个锁所住一组相关的对象
粗粒度锁是覆盖多个对象的单个锁,这样不仅简化了加锁行为本身,而且让你不必为了给它们加锁所而加载所有的对象。

运行机制

  • 实现粗粒度锁的第一步是为一组对象建立一个控制点,使得只用一个锁就能锁住多个对象。
  • 用乐观离线锁让组中每个对象都共享同一个版本号来建立一个控制点。

  • 用悲观离线锁,可以让组中每个成员共享锁标记。

一簇相关对象都存在一个唯一的、提供对集合各成员访问的根对象。加锁时,需要一个到根对象的搜索方法。


用共享锁或根对象锁实现粗粒度锁有一定的折中:用关系数据库时,共享锁会导致几乎所有的查询语句都和版本表version关联;使用悲观离线锁时,可能总是要重新读取一些对象来保证它们是新的。


使用时机


使用粗粒度锁可以使获取和释放锁的代价很小。

示例-共享的乐观离线锁(Java)


step1:构造版本类-目的是在领域对象聚集范围内共享

注意,删除版本记录表明释放锁,但是决不允许这种情况发生:
删除操作的返回行数为0,这说明版本记录已经被删除了。删除某版本的数据时并没有获得乐观离线锁。

step2:创建领域对象-顾客和顾客地址

step3:使用版本对象


step4:如果是删除操作,则删除客户时还要删除地址信息

标签:粗粒度,Grained,删除,对象,离线,版本,共享,设计模式
From: https://blog.csdn.net/workflower/article/details/141798649

相关文章

  • 结构型设计模式—桥接模式
    结构型设计模式—桥接模式欢迎长按图片加好友,我会第一时间和你分享持续更多的开发知识,面试资源,学习方法等等。假设你要买一张新桌子,你有两个选择:一种是木制的桌子,另一种是金属制的桌子。无论你选择哪种材质,你还希望这张桌子可以有不同的颜色,比如红色、蓝色或者绿色。如......
  • C#设计模式入门实战教程
    什么是设计模式设计模式是对面向对象设计中反复出现的问题的解决方案。它们提供了被反复使用、多数人知晓的、经过分类编目的代码设计经验总结。设计模式的作用提高代码的可重用性:通过定义一套标准的解决方案,设计模式使得相同或类似的问题可以在不同的项目中复用相同的代码结构或逻......
  • C#设计模式入门实战教程
    什么是设计模式设计模式是对面向对象设计中反复出现的问题的解决方案。它们提供了被反复使用、多数人知晓的、经过分类编目的代码设计经验总结。设计模式的作用提高代码的可重用性:通过定义一套标准的解决方案,设计模式使得相同或类似的问题可以在不同的项目中复用相同的代码结......
  • 设计模式 17 中介者模式
    设计模式17创建型模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式(7):适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式行为型模式(11):责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者......
  • Java中的设计模式:面向对象设计的实用技巧
    Java中的设计模式:面向对象设计的实用技巧大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!设计模式是软件工程中被广泛应用的一系列最佳实践,它们可以帮助解决常见的软件设计问题。在Java中,设计模式尤其重要,因为它们提供了一套标准的方法来创建灵活且可......
  • C++ 设计模式——解释器模式
    目录C++设计模式——解释器模式1.主要组成成分2.逐步构建解释器模式步骤1:定义抽象表达式步骤2:实现终结符表达式步骤3:实现非终结符表达式步骤4:构建语法树步骤5:实现内存管理步骤6:创建上下文和客户端3.解释器模式UML图UML图解析4.解释器模式的优点5.......
  • C++ 设计模式——设计模式总结
    目录C++设计模式——设计模式总结1.面向对象程序设计的几个原则2.设计模式的分类3.设计模式的定义3.1创建型设计模式的定义3.2结构型设计模式的定义3.3行为型设计模式的定义4.重要提示C++设计模式——设计模式总结设计模式是软件设计中常见问题的典型解决......
  • 活动系统开发之采用设计模式与非设计模式的区别-需求整理
    用户需求(活动系统):    1、活动类型:答题、图片展示、签到、抽奖、组团等活动     2、活动介绍:        a、答题活动:                        第一种是签到后,随机抽取10道题,答对8到就可以抽奖;          ......
  • 在Java中23种设计模式,分类以及代码示例
    在Java中23种设计模式,分类以及代码示例在Java中,设计模式可以分为23种,以三个不同的分类进行划分。1.创建型模式(CreationalPatterns):单例模式(Singleton)原型模式(Prototype)工厂方法模式(FactoryMethod)抽象工厂模式(AbstractFactory)建造者模式(Builder)2.结构型模式(Structura......
  • 如果我想在Android应用中实现资源的自动管理,除了try-with-resources语句,还有哪些设计
    在Android应用开发中,除了使用try-with-resources语句来实现资源的自动管理,还可以参考以下设计模式和最佳实践:1.**单例模式(Singleton)**:  -对于需要全局访问的资源,如数据库连接或共享的配置对象,可以使用单例模式来确保只有一个实例被创建,并在应用的整个生命周期中复用。2......