正如许多人所指出的,HashMap.put
并发使用时可能会遇到无限执行循环(请参阅GRIZZLY-1207,JGRP-525,可能是HHH-6414,以及此SO
答案)。
HashMap
明确记录为不是线程安全的。显然,正确的解决方法是使用一个线程安全的实现Map
,ConncurrentHashMap
尤其如此。我对引起无限循环的并发计时感到好奇。我最近在Java
7 JRE上遇到了这个循环,想了解确切的原因。例如,这是由多个看跌期权同时引起的吗?
在HashMap.put内部的外观显示HashMap.Entry
包含指向下一个节点的链接(在存储桶中?)。我认为这些链接正在损坏以包含循环引用,这将导致无限循环。但是,我仍然不完全了解这种腐败是如何发生的。
要的是什么很多人认为恰恰相反,与主要问题multi- threading
,并HashMaps
不仅仅是一个重复的条目或消失的一个......正如你所说的,可能当两个或多个发生一个无限循环Threads
的同时决定调整HashMap
。
如果HashMap的大小超过给定的阈值,那么多个线程可能最终会尝试同时调整其大小,如果我们足够幸运(您已经在生产中部署了代码),它们将永远继续下去…
问题是由void resize(int newCapacity);
和void transfer(Entry[] newTable);
实现的方式引起的,您可以自己查看openjdk源代码。运气不好,时机安排得当,条目被颠倒了(在此数据结构中不需要排序),并且最终在线程继续运行时最终错误地互相引用while(e != null)
…
虽然我可以尝试给自己一个解释,但我想赞扬保罗·泰玛(Paul
Tyma
)的职位(无论如何我都不能做得比他更好),在我第一次决定弄清为什么不这样做的时候,我学到了这是如何工作的几个月前被录用了…
http://mailinator.blogspot.com/2009/06/beautiful-race-
condition.html
正如保罗所说,描述这场比赛的最好的词是条件: beautiful
我的期望: 如果用户输入的Int不在正确的范围内,程序将给他另一次机会,直到用户给出正确的类型。 所以,我需要一个块。但我有一个无限循环。 我的代码: 我读到: 重置. nextLine()扫描仪 使用扫描仪。扫描仪后面的nextLine()。nextInt() nextInt()的扫描仪错误 扫描仪在使用next()或nextFoo()后跳过nextLine()? 如何使用java.util.扫
我对react钩子和效果有点陌生,在使用useEffect时遇到了问题 上面的代码是我构建的useEffect,用于使用axios获取数据库中的所有数据,并且我将所有数据放在一个称为reports的状态中。 但是当我console.log报告时,它会导致无限循环。我不知道为什么? 让我给你看一个我做的简单动作。 我正在做一个按钮,当它被点击时,报告的状态(按id)将被更新。 这是该州报告结构的样本
我在使用useEffect时搜索了很多关于无限循环的帖子,但仍然没有找到答案 在useEffect中,我试图调用get accounts api,当然,我放置了一个空数组,因为我只希望它在渲染后运行一次。但目前我喜欢添加“addAccount”功能。因此,如果我按下add按钮,它就会发送一个post请求。这里是一个问题,我想检查值是否已更改,因此我将值放入第二个参数,即空数组,它会导致无限循环。但
我正在创建一个简单的议程应用程序,它作为后端连接到Firebase。我想在每次写入时获取数据,我试图避开一个无限循环。 初始todos状态为null。然而,当我获取Firebase数据时,它会发生变化,然后导致组件本身的重新渲染,这将导致另一次获取,再次导致无限循环。我已经因此打破了Firebase中火花计划的限制,并因为临时阻塞而浪费了几天的工作。我认为这可以用useCallback钩子修复,但
问题内容: 我试图弄清楚为什么页面在单击时没有导航到其模板。URL更新,并且我没有JS错误。。我相信它 会加载 文件,但随后会无限加载控制器。我在SessionsController的实例化中添加了代码后,发现了这一点。 布局 我的看法 我的JS 在里面,我有个大而光明的人: 问题答案: 我唯一看到的是缺少括号和逗号。您可以尝试以下方法:
我想要我的。htaccess文件,如果任何作为子域条目的通配符出现在浏览器上,则重定向到某个页面。i、 我想要 山姆,xyz。通用域名格式 重定向到 山姆,xyz。com/view。php?id=sam 我使用以下重写规则重定向。 重新启动引擎 重写cond%{HTTP_HOST}^www.xyz。com[NC] 重写cond%{HTTP_HOST}^([^.])。xyz。通用域名格式 重写 ^(