3

私はJavaでゲームを作っています。ゲーム内のすべての敵はスレッドであり、ゲームのデータ構造を常にループしています(私は常にクラスVectorを使用しています)。

最近、スレッドがループしている間に要素がベクターに追加/削除されているため、「ConcurrentModificationException」が発生しています。追加/削除の問題を回避するための戦略があることを知っています(実際には、削除の問題を回避するためにいくつかを使用していますが、「追加」の問題はまだあります)。

javaはConcurrentModificationExceptionを回避するVector/Listをサポートしていると聞きました。

この構造が何であるかについて何か考えがありますか?ありがとう。

4

2 に答える 2

6

java.util.concurrentをチェックしてください、それはあなたが探しているものを持っています。

于 2011-11-25T23:02:43.097 に答える
4

CopyOnWriteArrayList。ただし、javadocを注意深く読み、実際に期待どおりの動作が得られるかどうか(メモリ整合性の効果を確認してください)、さらにパフォーマンスのオーバーヘッドに見合うだけの価値があるかどうかを検討してください。ReentrantReadWriteLockAtomicReferences、およびCollections.synchronizedListとの同期に加えて、役立つ場合があります。

于 2011-11-25T23:02:43.883 に答える