gpt4 book ai didi

java - 测试中突然出现很多 BrokenBarrierExceptions

转载 作者:太空狗 更新时间:2023-10-29 12:38:16 25 4
gpt4 key购买 nike

两年后,我的一项测试(测试一些并发数据库事务)突然开始失败,并在构建服务器上出现 BrokenBarrierException。它曾经一直有效,现在它失败了三分之一的构建。它在 Windows 工作站上永远不会失败。

有人知道为什么吗?

构建服务器使用这个操作系统:Linux 版本 2.6.5-7.244-bigsmp (geeko@buildhost) (gcc 版本 3.3.3 (SuSE Linux)) #1 SMP Mon Dec 12 18:32:25 UTC 2005在一对氙气芯片上

和这个 java 版本:Java 版本“1.6.0_16”Java(TM) SE 运行时环境(build 1.6.0_16-b01)Java HotSpot(TM) 服务器虚拟机(内部版本 14.2-b01,混合模式)

  • 埃里克

最佳答案

我敢猜测这些故障是真的。

很多技术上不正确的并发代码的问题在于它可以在大量的实现上运行。典型的例子是在需要可见性时未能将字段声明为 volatile,这通常在单核机器上工作,但在多核机器上失败。但是,可能会发生更多微妙的错误,这取决于 JLS 允许但可能未在任何当前 JVM 实现中实现的潜在重新排序等事情。

很可能已经进行了硬件/软件升级,这应该是微不足道的,但现在正在解决这个并发问题。或者,日期的变化极有可能会影响问题的可见性(如果您在测试中使用 new Date() 之类的东西,理论上不同的值可能会导致优化以使用略有不同的路径)。或者这甚至可能归因于过去经常在盒子停止时运行的其他一些进程;当有更多的空闲周期时,HotSpot 完全有可能查看 CPU 利用率并执行更积极的优化(我不认为它确实这样做,事实上,但它可以).

基本上,如果您的并发问题只是通过一些微妙的重新排序或优化暴露出来,那么这可能会也可能不会发生,具体取决于 JVM 编译器的实现细节。所以安装一个新的 JVM 可能会触发这个,但同样它也可能被 任何 导致编译器行为略有不同的事情触发。

关于java - 测试中突然出现很多 BrokenBarrierExceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com