死循环(Dead Loop)是怎么样形成的


//为什么下面的这段代码是死循环而改成这样y1=2.1/1.9,y2=1.9/2.1;就不是死循环?
}

这是一个会导致死循环(endless loop)的bug,因为比較有意思所以记录一下


时,由于matched已经是true所以||之后的match方法不会被执行,iterator就不会迭代到下一个元素再次回到while时,hasNext()总是返回true(因为iterator没有向前迭代)所以导致了死循环。对AndCondition也是如此不同之处是当遇到matched为false时,&&之后的match方法被跳过然后进入死循环。

实际上除了死循环,左侧实现還有一个性能问题以OrCondtion为例,只要在迭代过程中出现任何一个child condition是true就可以结束循环直接返回true了同样对于AndCondition,只要在迭代过程中出现任何一个child condition昰false也可以结束循环直接返回false了都不需要把所有的child condition都检查一边。

基于上述分析右侧是修改后的版本。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信