📜  Java并发中的锁条带是什么?

📅  最后修改于: 2022-05-13 01:55:32.182000             🧑  作者: Mango

Java并发中的锁条带是什么?

锁条带是锁定发生在几个容器或条带或桶上的地方,这意味着到达桶只是螺栓,而不是整个信息结构。这就是锁条带的想法。对信息结构的一部分拥有单独的锁,其中每个锁都锁定在自治项目的可变测量排列上。我们以ConcurrentHashMap为例。

例子:

当然, Java中的 ConcurrentHashMap 有 16 个桶,每个容器都有自己的锁系统。因此,到达离散桶中键的字符串可以同时到达它们。如果您需要想象一下,那么下面的图片会让您想到如何为 ConcurrentHashMap 锁定条带化。

这里有两个字符串需要到达罐 0 中的键,以便其中一个可以进入,同样,两个字符串需要到达盆 1 中的键,以便其中一个可以进入。与桶 n-3 相同。沿着这些思路,通过从 6 个字符串中分离出锁定条带,3 个字符串可以削弱信息结构。

为了发现新组件的存储桶,我们依赖于密钥的哈希码。为了包含更多的桶,我们应该复制当前的哈希表并制作另一个表,状态和大小加倍。

锁条带的特点:

  1. 它仅发生在某些存储桶/容器上。
  2. 它有助于将两个或更多元素添加到不同的容器中。

锁条带在Java并发中的作用

  1. 它在处理并发访问数据的同时具有良好的性能。
  2. 它有助于线程访问单独的存储桶/容器中的密钥。

Java并发缺点:

在Java Concurrency 中的 Lock Striping 应用锁的情况下,如果您需要一个集合进行独占访问而不是单个锁,那么它会更加困难和昂贵。