Hazelcast IMap - 同时更新相同的密钥,不同的价值

时间:2017-06-30 21:11:08

标签: java multithreading concurrency hazelcast

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

我需要确定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}

1 个答案:

答案 0 :(得分:5)

Hazelcast使用分区。密钥被散列以找到该条目的正确分区。

每个分区都是单线程的,每个分区只有一个分区线程处理。因此,单个密钥由单个分区线程处理。

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

我真的不明白你的符号:key: {value1: 1, value2: 2} - >它看起来像一个嵌套的地图。

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

相关问题