https://juejin.im/entry/6844903599055732743

    • 减少锁持有时间
      • 只对必要加锁的代码段加锁
    • 减少锁颗粒度
      • 将大对象拆成更小颗粒度的小对象
      • Collections.synchronizedMap() 和 ConcurrentHashMp 的 segment 加锁对比
    • 锁分离
      • 读写分离
    • 锁粗化
      • 两块需要同样的锁的代码中,夹杂着执行很快的、不需要同步的代码,这时可以将整块代码加锁
      • 循环中加锁,可以将锁放到循环外