JDK的ConcurrentHashMap使用锁定条带技术。最小化锁定开销是一个不错的主意。是否有其他图书馆或工具可以利用它? 例如,数据库引擎是否使用它?
如果该技术在其他领域没有那么有用,那么它的局限性是什么?
答案 0 :(得分:4)
当有一种方法可以将高争用锁定分解为多个锁而不会影响数据完整性时,锁定条带化非常有用。如果这是可能的,应该考虑一下,但并非总是如此。数据结构也是决策的促成因素。因此,如果我们使用大型数组来实现哈希表,则对整个哈希表使用单个锁来进行同步将导致线程顺序访问数据结构。如果这是哈希表上的相同位置,那么它是必要的,但是,如果他们正在访问表的两个极端,那该怎么办。
使用锁定条带确实节省了大量时间。多次运行scenario几乎可以将执行时间减半。
锁定条带化的缺点是很难获得受条带化影响的数据结构的状态。在示例中,表的大小或尝试列出/枚举整个表可能很麻烦,因为我们需要获取所有条带锁。