4.1 锁的优化及注意事项

Posted anxbb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.1 锁的优化及注意事项相关的知识,希望对你有一定的参考价值。

一:减少锁的持有时间:

   例如:   

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 锁的优化及注意事项的主要内容,如果未能解决你的问题,请参考以下文章

锁的优化及注意事项

锁的优化及注意事项(读书笔记)

《实战Java高并发程序设计》---第4章 锁的优化及注意事项

锁的优化和注意事项

详解synchronized锁的各种用法及注意事项

Java锁优化思路及JVM实现