Dúvida na resposta da questão sobre PriorityQueue

alguém pode me explicar porque a saida do código abaixo será: “bye 2, seguido por uma Exceção”

CÓDIGO…

Queue q = new PriorityQueue();
q.offer(new String("hello "));
q.offer(new String("hi ") );
q.offer(new String("bye "));
for ( Object o : q )
{
System.out.println(q.poll() + " " + q.size());
}

Olá,

você está iterando (tentando imprimir o prox. elemento) sobre um elemento que foi removido ao invocar o método pool.

Se você reparar na exeção:

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.PriorityQueue$Itr.next(Unknown Source)

Bom, de passagem rápida acho que é isso.

Abs.