我一直在尋找這麼難以找到答案,但我不知道我做錯了什麼。我正在學習如何使用JAVA線程。事情是我正在做一個太空船遊戲。我有一個創建敵人的方法(這些敵人被添加到一個ArrayList中,它被繪製爲使得運動效果好,這很好)。我有另一種方法,在這個ArrayList中查看那些已經死亡的敵人(死亡是一個布爾值,如果敵人消失或者被殺死的話會變爲真),如果它們是(死亡),則從ArrayList中刪除那些再畫)。我有一個使用createEnemy方法的線程(它工作正常)。現在問題來了,我需要使用這個ereaseEnemy方法,但它給我和併發錯誤,我已經嘗試在兩個方法上使用同步,但ereaseEnemy方法從未開始工作。不知道如何解決這個問題。我應該停止第一個線程(創建者)來完成其他工作?我在這裏錯過了什麼?謝謝!去除敵人ArrayList上的Java併發性
for (Enemigo enemigo1 : enemigos) {
if (!enemigo1.isEstaVivo()) { enemigos.remove(enemigo1); }
}
你可能根本不應該使用多線程。 – SLaks
有關如何從ArrayList中刪除條目的示例代碼? – kosa
好吧,它會工作,但我不知道它怎麼不使用它們。我很確定我必須使用創建者線程,這是我可以繼續提供敵人的唯一方法。但是,正如我所說的,不知道我該如何清理那個敵人名單。如果我不這樣做,保持增長和增長。有什麼建議? – MBRebaque