我正在編寫一個多線程的平臺遊戲。一個線程執行繪畫工作,另一個線程運行遊戲邏輯。我有一個數組列表,兩個線程需要同時訪問。我在我的繪製線程遍歷數組列表中的所有元素,並且在我的另一個線程中,我有時會刪除或添加元素到數組列表中。我得到了一個併發修改異常,但我不明白爲什麼,因爲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