3

我正在用Java制作游戏。游戏中的每个敌人都是一个线程,它们不断地循环遍历游戏的数据结构(我总是使用类 Vector)。

最近我得到了“ConcurrentModificationException”,因为一个元素正在从一个向量中添加/删除,而一个线程正在循环它。我知道有一些策略可以避免添加/删除问题(我实际上使用了一些策略来避免删除问题,但我仍然遇到“添加”问题)。

听说java支持避免ConcurrentModificationException的Vector/List。

你知道这个结构可能是什么吗?谢谢。

4

2 回答 2

6

查看java.util.concurrent,它有你要找的东西。

于 2011-11-25T23:02:43.097 回答
4

CopyOnWriteArrayList。但是请仔细阅读它的 javadocs 并考虑在实践中它是否提供了您所期望的行为(检查内存一致性效果),以​​及性能开销是否值得。除了与ReentrantReadWriteLockAtomicReferencesCollections.synchronizedList同步可能会对您有所帮助。

于 2011-11-25T23:02:43.883 回答