Hazelcast IMap - 并发更新相同的键,不同的值

Hazelcast IMap - Concurrent updates to the same key, different value

没有测试,因为我被困在火车上并且 运行 没电了...

我需要确定 Hazelcast 的 IMap 并发更新是否线程安全更新相同的键但该键的不同值。

例如:

假设我有 2 个不同的线程更新同一个 IMap 键...

出于所有意图和目的,这张地图如下所示:

  key: {value1: 1, value2: 2}

一个线程说,

  "I am updating value1 to 3"

另一个线程说(同时)

  "I am updating value2 to 4".

Hazelcast 如何处理这个问题?

最后的结果会不会像下面这样?

  key: {value1: 3, value2: 4}

Hazelcast 使用分区。对密钥进行哈希处理以找到该条目的正确分区。

每个分区都是单线程的,只有一个分区线程处理每个分区。因此,单个键的两次更新由单个分区线程处理。

如果两个更新的键落在同一个分区中,这些操作将在单个分区线程上按顺序进行。如果每个密钥位于不同的分区中 - 不同的线程将处理每个更新。

我不太明白你的表示法:key: {value1: 1, value2: 2} -> 它看起来像一个嵌套映射。

你还说:the same key but different values of that key. -> 在一个映射中,每个键只有一个值(除非该值是一个集合或一个映射)