2

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

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

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

あなたはこの構造が何であるか考えていますか?おかげさまで

答えて

4

CopyOnWriteArrayList。しかし、javadocsを注意深く読んで、実際には期待している動作(メモリの一貫性の影響をチェックする)が得られたかどうか、さらにパフォーマンスのオーバーヘッドがそれに見合っているかどうかを検討してください。 ReentrantReadWriteLockAtomicReferencesCollections.synchronizedListと同期する以外にも役立ちます。

+0

現在のドキュメントをリンクすることを忘れないでください。 –

+0

ありがとうございます!すべてが今すぐ完璧に動作します:) – Rama

6

java.util.concurrentをご覧ください。探しているものがあります。

+1

現在のドキュメントをリンクすることを忘れないでください。 –

+0

@HunterMcmillen - ヘッドアップのおかげで、今修正されました。 (現在の1.7が現在のものです) –

+0

はい、1.7が現在の値です –

関連する問題