Java是否具有支持并发修改的数据结构?

时间:2011-11-25 22:58:08

标签: java multithreading data-structures concurrentmodification

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

最近我得到了“ConcurrentModificationException”,因为当一个Thread循环遍历时,正在向Vector添加/删除元素。我知道有一些策略可以避免添加/删除问题(我实际上使用了一些来避免删除问题,但我仍然遇到“添加”问题)。

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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