通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2020-1-2
跳转到指定楼层
1#
发表于 2021-1-8 14:59:22 |只看该作者 |倒序浏览
1、put的时候导致的多线程数据不一一致。
这个问题比较好想象,比如有两个线程A和B,首先A希望插入一个key-value对到HashMap中,
首先计算记录,所要落到的桶的索引坐标,然后获取到该桶里面的链表头结点,此时线程A的时
间片用完了,而此时线程B被调度得以执行,和线程A-样执行,只不过线程B成功将记录插到
了桶里面,假设线程A插入的记录计算出来的桶索引和线程B要插入的记录计算出来的桶索引是
-样的,那么当线程B成功插入之后,线程A再次被调度运行时,它依然持有过期的链表头但是
它对此-无所知,以至于它认为它应该这样做,如此-来就覆盖了线程B插入的记录,这样线程
B插入的记录就凭空消失了,造成了数据不一致的行为。


举报本楼

您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-11-15 12:47 , Processed in 0.084023 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部