有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在并发HashMap中重新灰化期间的java检索

我读过关于并发HashMaps的实现,其中声明“ConcurrentHashMap在执行检索操作时不会阻塞,并且通常的操作没有锁定”。假设我们同时调用put()方法和get()方法。如果put()执行重新灰化,我们不需要同步get()方法。get()方法将使用哈希%N(其中N是哈希映射的大小)确定存储桶。get()的桶计算方法不应该因为重新灰化而受到影响吗


共 (1) 个答案

  1. # 1 楼答案

    只有在重新调整哈希表的大小时,才会进行重新分级

    如果get()在重新调整大小操作期间被调用,那么put()尚未完成,因此get()将不会看到新值,这是它应该看到的

    请记住,表箱位于一个数组中,数组的大小是固定的,因此重新调整大小意味着一个全新的哈希表。在重新调整大小完成之前,该新哈希表对其他线程不可用。在此之前,所有其他调用get()的线程都会看到旧的哈希表