Вы изменяете eventList
, используя eventList.remove()
, итерируя по нему. Вы не должны этого делать, или Iterator
станет непригодным для использования.
Просто замените eventList.remove(e)
на it.remove()
, и все должно быть в порядке.
Кроме того, вы можете легко запустить бесконечный цикл, если одно из ваших событий не будет готово при первом запуске, потому что it.hasNext()
никогда не вернет true
, как только вернет false
, но size
не быть модифицирован либо. Одним из решений было бы переместить всю Iterator it = ...
строку внутрь первого while
цикла.
Я бы также изменил внешний цикл while
, чтобы использовать while (!e.isEmpty())
вместо попытки вручную отследить размер eventList
.