我还没有自己创建线程。 我有一个从一开始就运行到程序,如下所示的末尾一个时间表:javafx时间轴中的java.util.ConcurrentModificationException
Timeline timeline = new Timeline(
new KeyFrame(Duration.millis(TIMELINE_DELAY), event -> {
intrudersList.forEach(Intruder::action);
towersList.forEach(Tower::action);
otherActivesList.forEach(Active::action);
}));
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();
而当入侵者类的模方法被调用时,我得到这个并发修改例外。
首先,我并没有真正理解时间轴是如何工作的!它创建新线程本身还是什么?以及如果我们有一个时间线每10秒执行一次任务并且该任务需要15秒完成,会发生什么情况! 第二的确如此:我如何得到这个修正!?
public void die() {
this.getCell().getContent().remove(this);
TimeLine.getInstance().removeIntruder(this);
System.out.println("death of intruder at: " + cell);
}
只需将die的内容封装到Platform.runLater(() - > {...})块中即可。 – DVarga
谢谢。那么,lambda什么时候会被调用?! –
也许你正在尝试编辑列表,而你迭代它? Intruder :: action是做什么的? – NwDev