学校の課題のための単純な 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 に置き換えてから、もう一度試してください。動作するはずです