我一直在寻找这么难以找到答案,但我不知道我做错了什么。我正在学习如何使用JAVA线程。事情是我正在做一个太空船游戏。我有一个创建敌人的方法(这些敌人被添加到一个ArrayList中,它被绘制为使得运动效果好,这很好)。我有另一种方法,在这个ArrayList中查看那些已经死亡的敌人(死亡是一个布尔值,如果敌人消失或者被杀死的话会变为真),如果它们是(死亡),则从ArrayList中删除那些再画)。我有一个使用createEnemy方法的线程(它工作正常)。现在问题来了,我需要使用这个ereaseEnemy方法,但它给我和并发错误,我已经尝试在两个方法上使用同步,但ereaseEnemy方法从未开始工作。不知道如何解决这个问题。我应该停止第一个线程(创建者)来完成其他工作?我在这里错过了什么?谢谢!去除敌人ArrayList上的Java并发性
for (Enemigo enemigo1 : enemigos) {
if (!enemigo1.isEstaVivo()) { enemigos.remove(enemigo1); }
}
你可能根本不应该使用多线程。 – SLaks
有关如何从ArrayList中删除条目的示例代码? – kosa
好吧,它会工作,但我不知道它怎么不使用它们。我很确定我必须使用创建者线程,这是我可以继续提供敌人的唯一方法。但是,正如我所说的,不知道我该如何清理那个敌人名单。如果我不这样做,保持增长和增长。有什么建议? – MBRebaque