Coarse-Grained lock 粗粒度锁
- 用一个锁Lock一组相关的对象
- 有时,需要按组来修改多个对象.
- 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
- 为每一个对象都加上一个锁是很繁琐的.
- 粗粒度锁是覆盖多个对象的单个锁.
- 简化了加锁行为.
- 且不必为了给它们加锁而加载所有对象.
- 运行机制
- 为一组对象建立一个控制点.
- 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
- 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
- 需要在模型中指定该组的每个对象.
- 共享的悲观离线锁要求组中每个对象共享某种锁标记.
- 通过这个锁标记来锁住它们.
- 一个共享的版本对象就是最好的锁标记.
- 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
- 为一组对象建立一个控制点.
- 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
- 以及定义聚集中包含了什么的边界对象.
- 锁住根对象的根锁提供了聚集的单一控制点.
- 需要为聚集对象提供到根对象的导航方法.
- 使用时机
- 最明显的理由是为了满足业务需要.
- 好处是以很小的代价来获取和释放锁.
- Implicit Lock隐含锁
- 允许框架或层超类型获取离线锁.
- 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
- 运行机制
- 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
- 第一步是列出业务事务中那些任务必须在加锁情况下完成.
- 允许框架或层超类型获取离线锁.
转载于:https://www.cnblogs.com/robyn/p/3528316.html
Coarse-Grained lock 粗粒度锁相关推荐
- java 中lock,java中lock获取锁的四种方法
在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...
- educoder 使用线程锁(lock)实现线程同步_性能:Lock的锁之优化
Lock / synchronized Lock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁 synchronizedLock实现方式JVM层实现Java底层代码实 ...
- java同步锁实例_Java lock同步锁使用实例解析
这篇文章主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1)Lock是一个接口,而synchroniz ...
- Java5线程并发库之LOCK(锁)CONDITION(条件)实现线程同步通信
为什么80%的码农都做不了架构师?>>> Lock(锁)&Condition(条件)实现线程同步通信 接下来介绍,java5线程并发库里面的锁.跟锁有关的类和接口主要是 ...
- 7.生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信)...
1 /* 2 * 生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信) 3 * */ 4 public class TestProductorAndConsum ...
- oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?
你有多了解Oracle Enqueue lock队列锁机制? 概念 Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制. 我们耳熟能详的 TM table lock表锁 ...
- 深圳Java培训:Lock线程锁
深圳Java培训:Lock线程锁 1:synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性.那么为什么会出现Lock呢? 在上面一篇文章中 ...
- 类锁 synchronized对象锁 和 Lock对象锁
在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制. 对象锁 所有对象都自动含有单一的锁. JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁的时候 ...
- JVM MarkWord与Lock Record 锁
JVM MarkWord与Lock Record && 锁 MarkWord Lock Record 偏向锁 轻量级锁 重量级锁 Windows中的Mutex Linux中的Mutex ...
最新文章
- nginx 解析php漏洞
- Linux中的chmod详解
- WinXP系统下安装SQL SERVER 2000
- 微信小程序setData的回调方法
- “JavaSwing” ——简单使用
- LeetCode刷题(22)
- Android使用BaseAdapter绑定ListView实现不同item的TextView多种文字变色
- ICPC North Central NA Contest 2017 E - Is-A? Has-A? Who Knowz-A?
- 尝试修改smali码破解App
- Java牛客项目课_仿牛客网讨论区_第七章
- 基于HTML的旋转立方体的实现
- 连续型随机变量单点概率为0以及不可能事件
- 时空数据模型类型、优缺点
- 《西部世界》,能给现实世界的人工智能带来怎样的狂想
- android 广告轮播图片+视频+音频
- N-Tiers开发方式(为何使用COM+组件的撰写商业逻辑层)
- 手机产业未来的发展方向
- K-Net 论文笔记
- python中repeat_Python Pandas Series.repeat()用法及代码示例
- 《2022元宇宙黑客松》ThreeX专场
热门文章
- IBM Machine Learning学习笔记——Time Series and Survival Analysis
- 知识图谱入门 , 知识问答
- 深度学习之基础知识详解
- sublime运行python代码,如何从Sublime Text 2运行Python代码?
- python遥感影像分类代码_Python 实现遥感影像波段组合的示例代码
- eureka自我保护时间_Eureka的自我保护机制
- 如何让地面不起灰_地面不平怎么办?无沙找平的做法
- 你应该关注的几个Eclipse超酷插件
- hdu 1978 How many ways
- ORA-15260 diskgroup space exhausted Problem