Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hazelcast IMap put方法在存储桶、分区或密钥上获得锁?_Java_Multithreading_Synchronization_Thread Safety_Hazelcast - Fatal编程技术网

Java Hazelcast IMap put方法在存储桶、分区或密钥上获得锁?

Java Hazelcast IMap put方法在存储桶、分区或密钥上获得锁?,java,multithreading,synchronization,thread-safety,hazelcast,Java,Multithreading,Synchronization,Thread Safety,Hazelcast,Hazelcast IMap put方法在存储桶、分区或密钥上获得锁? java.util.concurrent.ConcurrentHashMapput方法获取存储桶上的锁并写入映射。 而在Hazelcast IMap中,它是java.util.concurrent.ConcurrentHashMap的分布式映射实现,当以下代码由一个Hazelcast节点执行时。 imap.put(键、值) 它是否在bucket、partition或key上获得锁?请澄清? 我在hazelcast文档中找不到

Hazelcast IMap put方法在存储桶、分区或密钥上获得锁?
java.util.concurrent.ConcurrentHashMap
put方法获取存储桶上的锁并写入映射。
而在Hazelcast IMap中,它是
java.util.concurrent.ConcurrentHashMap
的分布式映射实现,当以下代码由一个Hazelcast节点执行时。
imap.put(键、值)
它是否在bucket、partition或key上获得锁?请澄清?
我在hazelcast文档中找不到这方面的答案。

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

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

然而,其中一个可以通过使用IMap API获取密钥上的锁


有关Hazelcast线程模型的详细信息,请参见此处:

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

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

然而,其中一个可以通过使用IMap API获取密钥上的锁


有关Hazelcast线程模型的详细信息,请参见此处:

谢谢您的回答,它对我帮助很大。谢谢您的回答,它对我帮助很大。