我還沒有自己創建線程。 我有一個從一開始就運行到程序,如下所示的末尾一個時間表: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