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

关于锁的两个小技巧

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

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

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

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

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

这要求我们做到这几点:

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

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

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

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

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

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

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

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

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

相关推荐

    PHP实例开发源码—龙兵微信开锁换锁小程序模板源码 PHP版.zip

    【PHP实例开发源码—龙兵微信开锁换锁小程序模板源码 PHP版.zip】是一个包含PHP编程语言的微信小程序开发模板,适用于创建基于微信平台的开锁换锁服务应用。这个压缩包提供了完整的源代码,让开发者可以深入理解如何...

    一台电脑接两个显示器

    使用扩展屏幕的小技巧 在使用扩展屏幕时,需要注意扩展屏幕和主屏幕的区别。扩展屏幕没有任务栏,也不能把程序快捷按钮锁在扩展屏幕上。可以使用 UltraMon 软件,安装了这个软件后,扩展屏幕会出现两个变化:扩展...

    axure教程-iphone小技巧

    【axure教程-iphone小技巧】中的主要知识点是利用axure软件模拟iPhone的滑动解锁效果。这个教程向我们展示了如何通过axure的功能创建一个类似于iPhone解锁的交互原型。 首先,制作滑动解锁效果需要准备以下素材: 1...

    50个Windows 8 应用小技巧

    9. **多屏显示**:触摸屏设备可以同时显示两个应用程序,提升多任务处理效率。 10. **天气应用**:默认显示加州阿纳海姆天气,右键可添加城市,查看本地天气。 11. **拼写检查**:Metro应用内置拼写检查,错误单词...

    提升Java的锁性能Java开发Java经验技巧共5页.p

    - 死锁是指两个或更多线程相互等待对方释放资源,造成僵局。合理设计锁的获取顺序,使用死锁检测算法,可以避免死锁问题。 5. **使用并发工具类** - **Semaphore**:信号量用于限制同时访问特定资源的线程数量。 ...

    Unity3D小技巧1

    Unity3D 小技巧 Unity3D 是一个功能强大且流行的游戏引擎,它提供了许多实用的功能来提高开发效率和质量。然而,许多开发者可能不知道 Unity3D 提供的一些小技巧,这些技巧可以大大提高开发效率和质量。本文将总结...

    S7-200编程小技巧

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

    50个Windows 8 应用小技巧.docx

    以下是一些关于Windows 8应用的小技巧: 1. **锁屏**:Windows 8的锁屏界面提供了简洁的登录方式,通过触摸或鼠标点击即可解锁。 2. **Metro主屏**:主屏由一系列磁贴组成,用户可以自定义磁贴布局,右击磁贴可...

    【推荐】大数据时代,你不得不知的Hadoop使用技巧

    Hadoop由几个核心组件构成,其中最核心的两个是Hadoop分布式文件系统(HDFS)和MapReduce编程模型。HDFS能够存储大规模数据集,并提供高吞吐量的数据访问,而MapReduce则用于处理大规模数据集的并行运算。 对于初学...

    ICT新手不得不看的小技巧

    在调试三极管时,需要测两个 PN 结外和加做饱和电压测试。在调试 IC 时,需要找准该颗 IC 的 VCC 与 GND,并在 IC 编辑里分别注明按(F5)。 结语 ICT 新手需要了解这些小技巧来提高测试效率和准确性。在实际应用...

    华为荣耀6小技巧

    该机拥有丰富的功能和小技巧,下面将详细介绍其中的一些实用特性。 1. **开启USB调试模式**:在华为荣耀6中,要开启USB调试,首先需要进入“设置”,然后下拉找到“关于手机”,连续点击7次“版本号”以解锁开发者...

    最新收集25个iphone4使用小技巧

    点一下中间出来一个锁,这就说明锁住了,不怕屏幕来回翻转了,在点一下中间锁就没了,这就说明可以正常使用了,锁定后,在手机右上角电池旁边会有一个小图标,以便知道自己用不用来锁定。 22. 多任务运行及关闭:...

    java的Lock锁原理详解.docx

    Java中的锁机制是多线程编程中至关重要的一个概念,用于协调多个线程对共享资源的访问。在Java中,有两种主要的锁机制:synchronized和Lock。它们都是用来实现线程同步,防止数据竞争,确保并发环境下的数据一致性。...

    iPhone耳机使用小技巧

    以下是一些关于如何更有效地利用iPhone耳机的小技巧: 1. **启动Siri**:当你想要与苹果的智能助手Siri进行互动时,无需解锁手机或触摸屏幕,只需按住耳机上的凹槽(对于AirPods或带有线控的EarPods,这个凹槽通常...

    Ai隐藏的小技巧

    - 调合两个物体:[Ctrl]+[Alt]+ - 取消调合:[Ctrl]+[Alt]+[Shift]+ - 调合选项:选中W后按[Enter] - 新建图像遮罩:[Ctrl]+[7] - 取消图像遮罩:[Ctrl]+[Alt]+[7] - 结合路径:[Ctrl]+8 - 取消结合:[Ctrl]+...

    广联达深思S4全国版写锁+广材助手+552授权

    "广联达深思S4全国版写锁+广材助手+552授权"这个标题所包含的知识点主要涉及两个核心产品:广联达深思S4和广材助手,以及相关的授权信息。 首先,我们来详细了解一下这两个软件产品: 1. **广联达深思S4**:这是一...

    Windows 8 应用小技巧集锦

    虽然Metro应用程序默认全屏显示,但在触控屏设备上可以同时查看两个应用程序。 #### 10. 查询天气 Metro天气应用程序默认显示特定城市的天气信息。用户可以通过右击添加自己所在城市的天气预报。 #### 11. 拼写...

    iPad新用户16个必须要知道的小技巧.docx

    iPad是苹果公司推出的平板电脑设备,对于新用户来说,掌握一些使用技巧能极大地提升使用体验。以下是一些针对iPad新用户的必备...以上16个小技巧将帮助新用户更好地掌握iPad的使用,提高效率,享受更好的数字生活体验。

    小工具类 手势解锁(源码).zip

    在这个"小工具类 手势解锁(源码).zip"压缩包中,有两个主要文件: 1. **源码的重要性.txt**:这个文件可能详细解释了源码在软件开发中的重要性。源码是程序员可以直接编辑和修改的代码,它允许开发者深入理解软件...

    如何设置一台电脑两个显示器.docx

    在使用扩展屏幕时,我们需要注意一些小技巧,例如,扩展屏幕没有任务栏,也不能把程序快捷按钮锁在扩展屏幕上。为了解决这个问题,我们可以使用扩展屏幕管理工具,例如UltraMon,安装了这个软件后,扩展屏幕会出现两...

Global site tag (gtag.js) - Google Analytics