在一个用于学校作业的简单 Java 程序中,我没有使用任何线程(除非 Java 以某种方式优化了代码以使用它们)。为什么当我这样做的时候
java App < test.txt // correct result
java App < test.txt > ans.txt // 1 wrong result
然后我将 ArrayList 的使用切换到 Vector,它就可以工作了。我认为唯一的区别是同步?如果我不使用线程,为什么会得到不同的结果?错误结果的触发器似乎也只是> ans.txt
输出重定向?但早些时候,我还注意到一些奇怪的地方,当我添加一些 println 与 none 时,我得到了不同的结果。
为什么是这样?当我不使用线程时,我希望从 ArrayList/Vector 获得相同的结果吗?我按照我的想法使用了 ArrayList,因为我不使用线程,我可以摆脱 ArrayList 吗?
更新
代码是https://gist.github.com/3720606。你试一试:
java SchedulingDeliveries < Subtask1.txt // should give wrong result
预期的答案是 Subtask1-ans.txt,可以尝试 diff ans.txt
然后尝试搜索并将ArrayList替换为Vector,然后再试一次。应该管用