锁优化建议

  • 减小锁持有时间(减小锁持有的时间有助于降低锁冲突的可能性,提升系统并发能力);
  • 减小锁粒度:指缩小锁定对象的范围,从而减少锁冲突的可能性,进而提供系统并发能力;主要技术是锁分解和分段锁;
  • 读写锁替换独占锁(读多写少的场景,使用读写锁可以有效提升系统并发能力);
  • 锁分离(参见LinkedBlockingQueue的实现)
  • 锁粗化(Lock Coarsening):(虚拟机在遇到一连串连续的对同一个锁不断进行请求和释放时,会把所有的锁操作整合成对锁的一次请求,从而减少对锁的请求同步次数);

【知识点】

  • 锁分解

如果一个锁需要保护多个相互独立的状态变量,那么可以将这个锁分解为多个锁,并且每个锁只保护一个变量,从而提高可伸缩性,降低每个锁被请求的频率;

  • 锁分段

分段锁的实现:

分段锁的实现场景

results matching ""

    No results matching ""