现在我们的开发中越来越多用锁的情况,锁其实比cas恐怖很多,像性能问题,死锁问题,延时问题,都是极难排查的问题
之前在学习中掌握了一些技巧,在这里分享一下
1.open call
并发编程里面有一个术语“open call”
意思就是当我们在调用一个lock的方式时,我们需要将手中的锁释放掉(如果我们正持有锁),或者尽量避免去调用会lock的方法
看起来很简单,其实这还是很麻烦的事情
这要求我们做到这几点:
a.在所有带锁的方法中都显性地表明:我会加锁的,比如方法名,或者注释
b.把锁封装起来(注意,这个过程不一定是面向对象的)
c.把锁都放到同一层面上同一方法中,也就是说我们如果一个业务要加两个锁,那我们就要么把两个锁都加在service,要么就都放在bo中,在同一个方法块里面去做
2.避免反向加锁
有80%以上的死锁问题是由于反向加锁,大部分的gui程序也是由于这个问题,放弃了多线程的方案,通通采用了单线程模型
换句话来说,我们只要想办法做到,顺序加锁,我们就能避免80%以上的死锁问题
a.最简单的,我们给类的加锁定义一个方向
比如,我们先对房间加锁,再对用户加锁
b.对于同一类的不同对象的加锁,我们用一个比较器,统一排一个序,再加锁
比如用户锁,我们先根据用户id排个序,然后逐一加锁
分享到:
相关推荐
所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。 如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量...
泡泡网手机频道1月6日 随着iPhone 4S的推出,越来越多的人群加入了iPhone大军中,本文就专为iPhone4/4S用户介绍29个使用小诀窍,让你玩转iPhone。需要说明的是其中部分功能必须升级到iOS 5.0.1才能实现,请读者注意...
当我打开保险箱时,我曾经使用的一个简单技巧就是想象我是保险箱内的一个小人物,而我正站在保险箱内的架子上,望着门后。 这就是您正确确定处理方式的方式。 对于机械拨盘,在前门中没有玻璃或滚珠轴承的脆弱保险...
可能的话,可以到ic37去买一些小零件,自己搭一个小系统让它工作起来。 HOTLEK的单片机是RISC结构的8位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成I/O型单片机、LCD型单片机...
如果在声音事件的前面有一个“小喇叭”的标志,表示 该声音事件有一个声音提示。要设置声音事件的声音提示,则在“程序事件 ”列表框中选择声音事件,然后从“声音”下拉列表中选择需要的声音文件 作为声音提示。...
共两个目标文件,检测手机摇晃的监听器(设置重力感应监听器感应获得变化数据)。 6、Android 音乐快剪2.2源码(含文档) 共14个目标文件,具备录音、编辑音频文件……等。 7、android_gps_wifi_基站_定位集合 如...
共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了 Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步...
本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,...
.NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...
在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
同时也包括一些如何找bug的小技巧。同时我们还提供了添加像审核日志这样的自定义服务到NHibernate应用中的例子。 第九章开始讨论开发的流程以及一些有用的工具,通过一个NHibernate应用解释几种着手点。我们同时也...
(这里是两个〖关键帧〗,一个〖空白关键帧〗) (2)歌词制作: 歌词的制作,可以借助第三方软件如 : 这两款文字特效软件,内置了几百种效果,做出的歌词效果,很多是用Flash无法完成的,至于怎样使用这两款软件...
对于几乎每一个函数和系统调用,本书都用一个小的完整的程序进行演示。这可以让我们清楚地了解它们的用法,包括参数、返回值等。有些小程序还不是以说明库函数和系统调用的复杂功能和应用技巧,所以本书中也包含了...
3.7.6 用占总和的百分比选项度量两个字段的百分比 63 3.7.7 使用百分比选项将一行与另一行进行对比 65 3.7.8 利用指数选项跟踪相对重要性 65 3.8 案例学习:根据业务报表的行计算收入 67 3.9 下一步 71 ...
3.7.6 用占总和的百分比选项度量两个字段的百分比 63 3.7.7 使用百分比选项将一行与另一行进行对比 65 3.7.8 利用指数选项跟踪相对重要性 65 3.8 案例学习:根据业务报表的行计算收入 67 3.9 下一步 71 ...