`
snake1987
  • 浏览: 71824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于锁的两个小技巧

    博客分类:
  • java
 
阅读更多
现在我们的开发中越来越多用锁的情况,锁其实比cas恐怖很多,像性能问题,死锁问题,延时问题,都是极难排查的问题

之前在学习中掌握了一些技巧,在这里分享一下

1.open call
并发编程里面有一个术语“open call”

意思就是当我们在调用一个lock的方式时,我们需要将手中的锁释放掉(如果我们正持有锁),或者尽量避免去调用会lock的方法

看起来很简单,其实这还是很麻烦的事情

这要求我们做到这几点:

a.在所有带锁的方法中都显性地表明:我会加锁的,比如方法名,或者注释

b.把锁封装起来(注意,这个过程不一定是面向对象的)

c.把锁都放到同一层面上同一方法中,也就是说我们如果一个业务要加两个锁,那我们就要么把两个锁都加在service,要么就都放在bo中,在同一个方法块里面去做

2.避免反向加锁
有80%以上的死锁问题是由于反向加锁,大部分的gui程序也是由于这个问题,放弃了多线程的方案,通通采用了单线程模型

换句话来说,我们只要想办法做到,顺序加锁,我们就能避免80%以上的死锁问题

a.最简单的,我们给类的加锁定义一个方向

比如,我们先对房间加锁,再对用户加锁

b.对于同一类的不同对象的加锁,我们用一个比较器,统一排一个序,再加锁

比如用户锁,我们先根据用户id排个序,然后逐一加锁
分享到:
评论

相关推荐

    S7-200编程小技巧

    所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。  如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量...

    iPhone知多少?29个你该知道的技巧!

    泡泡网手机频道1月6日 随着iPhone 4S的推出,越来越多的人群加入了iPhone大军中,本文就专为iPhone4/4S用户介绍29个使用小诀窍,让你玩转iPhone。需要说明的是其中部分功能必须升级到iOS 5.0.1才能实现,请读者注意...

    LaGard-Drill-Points:LaGard安全锁钻Kong点

    当我打开保险箱时,我曾经使用的一个简单技巧就是想象我是保险箱内的一个小人物,而我正站在保险箱内的架子上,望着门后。 这就是您正确确定处理方式的方式。 对于机械拨盘,在前门中没有玻璃或滚珠轴承的脆弱保险...

    c语言编写单片机技巧

    可能的话,可以到ic37去买一些小零件,自己搭一个小系统让它工作起来。 HOTLEK的单片机是RISC结构的8位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成I/O型单片机、LCD型单片机...

    电脑高手必备 Windows系统35招实用技巧

    如果在声音事件的前面有一个“小喇叭”的标志,表示 该声音事件有一个声音提示。要设置声音事件的声音提示,则在“程序事件 ”列表框中选择声音事件,然后从“声音”下拉列表中选择需要的声音文件 作为声音提示。...

    Android最新资料以及源码

    共两个目标文件,检测手机摇晃的监听器(设置重力感应监听器感应获得变化数据)。 6、Android 音乐快剪2.2源码(含文档) 共14个目标文件,具备录音、编辑音频文件……等。 7、android_gps_wifi_基站_定位集合 如...

    windows驱动开发技术详解-part2

    共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了 Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步...

    Windows驱动开发技术详解的光盘-part1

    本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,...

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

    入门学习Linux常用必会60个命令实例详解doc/txt

    在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    NHibernate in Action by Christian Bauer

    同时也包括一些如何找bug的小技巧。同时我们还提供了添加像审核日志这样的自定义服务到NHibernate应用中的例子。 第九章开始讨论开发的流程以及一些有用的工具,通过一个NHibernate应用解释几种着手点。我们同时也...

    flashmtv的制作

    (这里是两个〖关键帧〗,一个〖空白关键帧〗) (2)歌词制作: 歌词的制作,可以借助第三方软件如 : 这两款文字特效软件,内置了几百种效果,做出的歌词效果,很多是用Flash无法完成的,至于怎样使用这两款软件...

    UNIX高级编程 计算机科学丛书

    对于几乎每一个函数和系统调用,本书都用一个小的完整的程序进行演示。这可以让我们清楚地了解它们的用法,包括参数、返回值等。有些小程序还不是以说明库函数和系统调用的复杂功能和应用技巧,所以本书中也包含了...

    Excel 2007数据透视表完全剖析 1/7

    3.7.6 用占总和的百分比选项度量两个字段的百分比 63 3.7.7 使用百分比选项将一行与另一行进行对比 65 3.7.8 利用指数选项跟踪相对重要性 65 3.8 案例学习:根据业务报表的行计算收入 67 3.9 下一步 71 ...

    Excel 2007数据透视表完全剖析 5/7

    3.7.6 用占总和的百分比选项度量两个字段的百分比 63 3.7.7 使用百分比选项将一行与另一行进行对比 65 3.7.8 利用指数选项跟踪相对重要性 65 3.8 案例学习:根据业务报表的行计算收入 67 3.9 下一步 71 ...

Global site tag (gtag.js) - Google Analytics