码迷,mamicode.com
首页 > 其他好文 > 详细

4.1 锁的优化及注意事项

时间:2018-03-01 13:27:25      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:读取   put   log   lock   没有   情况   需要   div   his   

一:减少锁的持有时间:

   例如:   

public synchronized void  all(){
aaa();
bbb();
ccc();
}
如果就bbb方法存在并发情况,需要加锁,那么我们只需要 给bbb方法添加同步方法即可:

public  void  all(){
aaa();
synchronized (this){
bbb();
}
ccc();
}

二:减小锁的粒度:

   最熟悉的就是 ConcurrentHashMap,本质是分段,当put的时候,那么它会tryLock,锁定它所处的段内,对其他段数据读取不进行阻塞

三:使用读写分离锁来代替独占锁

四:锁分离

  最熟悉的就是LinkedBlockingQueue,当用put和take的时候,如果队列已满或者是null的时候它只是阻塞取出或者插入,并没有锁定整个队列

五:锁的粗化

  如果一个方法里存在多个需要同步的方法,那么为了方便管理,我们可以将这个方法射程同步方法



 

       

4.1 锁的优化及注意事项

标签:读取   put   log   lock   没有   情况   需要   div   his   

原文地址:https://www.cnblogs.com/anxbb/p/8487762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!