分段锁学习

转自:https://cloud.tencent.com/developer/article/1150780,https://abcdabcd987.com/sharding/,给的例子贼牛

1.介绍

独占锁会降低性能。一般有三种方式降低锁的竞争程度:

  • 1、减少锁的持有时间
  • 2、降低锁的请求频率
  • 3、使用带有协调机制的独占锁,这些机制允许更高的并发性。(使用分段锁)

分段锁:

容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

与独占锁相比,维护多个锁来实现独占访问将更加困难而且开销更加大。

2.代码例子

https://gist.github.com/abcdabcd987/53b7aa6fdb8f7dbe46798fa6df2f5871

posted @ 2024-06-15 22:52  lypbendlf  阅读(7)  评论(0编辑  收藏  举报