我正在编写一个多线程的平台游戏。一个线程执行绘画工作,另一个线程运行游戏逻辑。我有一个数组列表,两个线程需要同时访问。我在我的绘制线程遍历数组列表中的所有元素,并且在我的另一个线程中,我有时会删除或添加元素到数组列表中。我得到了一个并发修改异常,但我不明白为什么,因为volatile关键字只允许一个线程一次访问一个变量。挥发性arraylist不按预期行事
这里是我的问题的一个例子
我的ArrayList
private volatile ArrayList<Entity> entities = new ArrayList<Entity>();
我的画码
for(Entity entity : entities)
{
if(entity!=null && entity.getX()>=xs-Block.WIDTH && entity.getX()<=xs+Main.WIDTH)
g.drawImage(entity.getImage(), entity.getX()-getXs(), entity.getY(), entity.getWidth(), entity.getHeight(), null);
}
我删除代码
public void removeEntity(Entity e)
{
entities.remove(e);
}
请张贴代码,如果你已经尝试了一些 – Abubakkar