1.减小锁持有时间
2.减小锁粒度
(1)将大对象拆成小对象,大大增加并行度,降低锁竞争
(2)偏向锁,轻量级锁成功率提高
(3)ConcurrentHashMap
3.锁分离
(1)ReadWriteLock
(2)读写分离,只要操作互不影响锁就可分离
LinkedBlockingQueue
4.锁粗化
如果对同一个锁不停的进行请求,同步和释放,本身也消耗系统宝贵资源,可以整合同步块
5.锁消除
发现不可被共享的对象,可以消除这些对象的锁
DoEscapeAnalysis 做逃逸分析,看使用同步锁的局部变量有没有调到全局
+EliminateLocks 开启锁消除