1.减少锁持有时间
2.减小锁粒度
-
缩小锁定对象的范围,从而减少锁冲突的可能
-
(分割数据结构)
3. 读写分离锁替换独占锁
- (分割数据功能,读多写少的场合)
4. 锁分离
- (如LinkedBlockingQueue的take()和put()方法,分别用各自的锁进行同步)
5. 锁粗化
- 一种例子,在每次循环时,都请求锁,释放锁,
- 更合理的做法是,在循环外请求一次锁,避免反复请求和释放锁资源
1.减少锁持有时间
2.减小锁粒度
缩小锁定对象的范围,从而减少锁冲突的可能
(分割数据结构)
3. 读写分离锁替换独占锁
4. 锁分离
5. 锁粗化