榛子 IMap 放置方法获取存储桶、分区或密钥上的锁?



Hazelcast IMap put 方法获取存储桶、分区或键上的锁?java.util.concurrent.ConcurrentHashMapput 方法获取存储桶上的锁并写入 Map。而在Hazelcast
IMap中,它是java.util.concurrent.ConcurrentHashMap的分布式映射实现,当以下代码由一个Hazelcast节点执行时。

imap.put(key, value);获取存储桶、分区或密钥上的锁?请澄清一下? 我在 hazelcast 文档中的任何地方都看不到这个问题的答案。

IMap.put 不会获取任何锁。每个 Hazelcast 成员都有一组特定的分区,这些分区由许多分区线程处理。每个分区线程拥有一定数量的分区。因此,当写入操作到达集群成员时,该操作由拥有分区的分区线程选取,该分区线程将成为该写入操作中 Entry 对象的主机。

如果同一成员收到另一个写操作,该操作发往同一分区线程拥有的相同或其他分区,则在线程完成上一个写入操作之前,不会选取该操作。这可以防止任何潜在的争用条件,并且不需要在默认状态下显式锁定。

但是,可以使用 IMap API 获取密钥上的锁。

有关 Hazelcast 线程模型的详细信息,请参阅此处:https://docs.hazelcast.org/docs/3.10.5/manual/html-single/index.html#threading-model

最新更新