分段锁学习
转自:https://cloud.tencent.com/developer/article/1150780,https://abcdabcd987.com/sharding/,给的例子贼牛
1.介绍
独占锁会降低性能。一般有三种方式降低锁的竞争程度:
- 1、减少锁的持有时间
- 2、降低锁的请求频率
- 3、使用带有协调机制的独占锁,这些机制允许更高的并发性。(使用分段锁)
分段锁:
容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。
与独占锁相比,维护多个锁来实现独占访问将更加困难而且开销更加大。
2.代码例子
https://gist.github.com/abcdabcd987/53b7aa6fdb8f7dbe46798fa6df2f5871