美文网首页
关于锁的几点使用心得

关于锁的几点使用心得

作者: Jiafu | 来源:发表于2018-01-05 19:18 被阅读0次
死锁的处理

如果一个操作需要获取多个锁,例如锁A和锁B,那么对多个锁的获取应该始终有固定的先后顺序。例如总是先获取A锁,再获取B锁,否则可能会出现死锁。例如线程1先获取了A锁,线程2先获取了B锁,然后线程1等待获取B锁,线程2等待获取A锁,这样死锁就产生了。

有层次关系的资源的锁处理

如果资源有层级关系,一种简单的方法是只设置一个锁,无论什么操作都获取这个锁。这样正确性是可以保证,只是某些情况下可能并发性不好。于是可以对于不同层次的资源设置不同的锁。假设我们的层次关系如下:

A(锁)--> B(锁) --> C

A(锁)--> D

A资源下有B、D两种资源,其中A和B有自己的锁,其它资源没有自己的锁。我们以读写锁为例说明:

  1. 如果对C进行写操作,那么对A加读锁,对B加写锁。
  2. 如果对C进行读操作,那么对A加读锁,对B加读锁。
  3. 如果对D进行写操作,那么对A加写锁。
  4. 如果对D进行读操作,那么对A加读锁。

D没有自己的锁,所以依赖它上层资源的锁来保护。
C没有自己的锁,所以依赖它上层资源的锁来保护。而B的上层还有资源,所以在修改B下资源的时候,一般不会对B的上层加写锁,而是加读锁,以提高并发度。

异步锁

如果锁的区间非常大,并且需要长时间拿锁,那么可以考虑使用异步锁。即注册回调函数,说明想要获取的锁类型,然后等待回调函数通知。

锁的区间

除了异步锁之外,锁的区间应该尽量地短。因此,不允许在锁内进行内存分配、释放、打印日志等相关的操作。

相关文章

  • 关于锁的几点使用心得

    死锁的处理 如果一个操作需要获取多个锁,例如锁A和锁B,那么对多个锁的获取应该始终有固定的先后顺序。例如总是先获取...

  • java性能调优

    一. 锁优化 因此总结了以下几点经验: 1.减少锁的时间 2.减少锁的粒度 3.减少加锁的次数 4.使用读写锁 5...

  • 关于精力的几点心得

    相较人的一生,精力比时间更有限,因为精力会随着时间的变化而起伏,最后越来越少,越来越弱,而且精力的消耗还需要时间来...

  • 关于管理的几点心得

    在得到专栏订阅了管理学课,原因是感觉自己做班主任做的非常累,效果还一般,就想怎么才能够有提高呢,最后管理学课的学习...

  • 关于演讲的几点心得

    个人今年以来,围绕演讲学习了相关知识,也有一些实践。学习知识方面的努力有,看了一本书《像Ted一样演讲》,学习了《...

  • 关于销售的几点心得

    前几天分享了销售目标的制定、分解与执行,但是不是只要做好充分的规划和百分百的落地就可以呢? ——No 销售之所以被...

  • 关于投资的几点心得

    人在逆境的时候,如果少想点损失,多想点所得,更容易走出困境。 错误的对标,错失一次成功机会之后,会错误的类比新的情...

  • 关于写作的几点心得

    翻看第一篇文章的日期到现在已将近一个月了,这一个月来有过喜悦,迷惘,沮丧。也有很多热心的简友们给我安慰和鼓励,让我...

  • 关于育儿的几点心得

    对于育儿知识,我一向求知若渴。但当我了解越多,学习越多,我就越发地感到焦虑而不知所措了! 这几天听樊登小读者关于培...

  • 关于学习的几点心得

    自从8月23日以来到今,重温了梁焕臻的语料语境英语学习和Python学习。总结起来有几点心得,特书写如下。 这2个...

网友评论

      本文标题:关于锁的几点使用心得

      本文链接:https://www.haomeiwen.com/subject/mnwsnxtx.html