如何进行锁优化

如何进行锁优化

  1. 减少所持有的时间
    减少锁持有的时间指在有线程安全要求的程序上加锁来尽量减少同步代码块对锁的持有时间
  2. 减小锁粒度
    减小锁粒度指将单个耗时较多的锁操作拆分为多个耗时较少的锁操作来增加锁的并行度,减少同一个锁上的竞。在减少锁的竞争后,偏向锁,轻量锁的使用率才会提高。减小锁粒度最典型的案例就是ConcurrentHashMap中的分段锁。
  3. 锁分离
    锁分离只根据不同的应用场景将锁的功能进行分离,以应对不同的变化,最常见的锁分离思想就是读写锁(ReadWriteLock),它根据锁的功能将锁分离成读锁和写锁,这样读读不互斥,读写互斥,写写互斥,既保证了线程的安全性,有提高了性能。
    操作分离思想可以进一步延伸为只要操作互不影响,就可以进一步拆分,比如LinkedBlockingQueue从头部取出数据,并从尾部加入数据。
  4. 锁粗化
    锁粗化只为了保障性能,会要求近可能将锁的操作细化为减少线程持有锁的时间,但是如果锁分的太细,将会导致系统频繁获取锁和释放锁,反而影响性能的提升。在这种情况下,建议将关联性强的锁操作集中起来处理,以提高系统整体的效率。
  5. 锁消除
    在开发经常会出现在不需要使用锁的情况下午用了锁操作而引起性能下降,着多数时因为程序编码不规范引起的,这时,我们需要检查并消除这些不必要的锁来提高系统的性能。

你可能感兴趣的:(javaee)