2009-05-05 53 views
1

JDK的ConcurrentHashMap使用锁分条技术。最小化锁定开销是个不错的主意。有没有其他的库或工具可以利用它? 例如,数据库引擎是否使用它?锁分条的应用领域

如果这项技术在其他领域没有那么有用,那么它的局限性是什么?

回答

4

当有一种将高争用锁分成多个锁而又不影响数据完整性的方法时,锁带是很有用的。如果这是可能的,应该采取一些思路,并非总是如此。数据结构也是决定的因素。因此,如果我们使用大数组来实现哈希表,那么使用整个哈希表的单个锁来同步它将导致线程顺序访问数据结构。如果这是散列表上的相同位置,那么它是必要的,但是,如果他们正在访问表格的两个极端值,该怎么办?

使用锁定条纹确实节省了大量时间。 scenario的多次运行几乎减少了执行时间的一半。

锁条纹的下方是很难得到受条纹影响的数据结构的状态。在这个例子中,表的大小,或者试图列出/枚举整个表可能很麻烦,因为我们需要获取所有的条形锁。