作者:咪了眼的小迷糊 | 来源:互联网 | 2023-01-30 18:23
没有测试,因为我被困在火车上,电池没电了...
我需要确定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}
tom.bujok..
5
Hazelcast使用分区。散列键以找到该条目的正确分区。
每个分区都是单线程的,只有一个分区线程处理每个分区。因此,单个键的两次更新由单个分区线程处理。
如果两个更新的密钥都位于同一分区中,则这些操作将在单个分区线程上顺序执行。如果每个键都位于不同的分区中,则每个更新将由不同的线程处理。
我不太了解您的表示法: key: {value1: 1, value2: 2}
->它看起来像是嵌套的地图。
您还说:the same key but different values of that key.
->在映射中,每个键只有一个值(除非该值是集合或映射)
1> tom.bujok..:
Hazelcast使用分区。散列键以找到该条目的正确分区。
每个分区都是单线程的,只有一个分区线程处理每个分区。因此,单个键的两次更新由单个分区线程处理。
如果两个更新的密钥都位于同一分区中,则这些操作将在单个分区线程上顺序执行。如果每个键都位于不同的分区中,则每个更新将由不同的线程处理。
我不太了解您的表示法: key: {value1: 1, value2: 2}
->它看起来像是嵌套的地图。
您还说:the same key but different values of that key.
->在映射中,每个键只有一个值(除非该值是集合或映射)