Why do you call the actual remove method inside that loop for? That will just throw a modification error on the next loop. Disregarding that, you won't be able to add another inner class inside the phaser if you were to attempt on adding another timed event like that lol
private List<Phaser> phasers = Collections.synchronizedList(new LinkedList<Phaser>());
public synchronized List<Phaser> getPhasers() { return phasers; }
What's the point of synchronizing a list that has methods that are all synchronized lol
Also, you should know that the main thread and this thread would go off sync if an event is added after which would delay some actions (would be better if you ran this off the main thread to prevent this), did you even think this code through? 0/10 would not use