zoukankan      html  css  js  c++  java
  • 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的时候它只是阻塞取出或者插入,并没有锁定整个队列

    五:锁的粗化

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



     

           

  • 相关阅读:
    构建之法8,9,10章
    作业6
    通过处理器类型获得处理器对象
    面经
    C语言实现字符串替换
    计算机网络整理
    常见面试题
    数据库常见面试题
    redis常见知识整理
    项目总结
  • 原文地址:https://www.cnblogs.com/anxbb/p/8487762.html
Copyright © 2011-2022 走看看