锁的性能和优化

一、避免死锁

  1、出现死锁需要满足以下条件:

    互斥条件:一个资源每次只能被一个进程使用。

    请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

    不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。

    循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  只要破坏死锁4个必要条件中的一个,死锁问题就能得以解决。

二、减小锁持有时间

三、减小锁粒度

  ConcurrentHashMap

四、读写分离锁来代替独占锁

  ReadWriteLock(读写分离锁)

五、锁分离

  LinkedBlockingQueue通过takeLock和putLock两把锁,实现了取数据和写数据的分离。

六、重入锁(ReentrantLock)和内部锁(synchronized)

  重入锁比内部锁功能更强大,内部锁使用更为简单,易于维护。两者性能相差不大。

七、锁粗化

 

posted on 2016-08-14 16:57  小胖哲  阅读(122)  评论(0)    收藏  举报