EventQueue IDs inconsistentes

Estou com um problema com o seguinte código de exemplo que mostra um comportamento inconsistente para o EventQueue:

public static void main( String[] args ) throws InvocationTargetException, InterruptedException {

    final long[] id1 = new long[ 1 ];
    final long[] id2 = new long[ 1 ];

    EventQueue.invokeAndWait( new Runnable() {
      @Override public void run() {
        id1[ 0 ] = Thread.currentThread().getId();
      }
    } );

    Thread.sleep( 5000 );

    EventQueue.invokeAndWait( new Runnable() {
      @Override public void run() {
        id2[ 0 ] = Thread.currentThread().getId();
      }
    } );

    System.out.println( "id1 = " + id1[0] );
    System.out.println( "id2 = " + id2[0] );

    if(id1[0]!=id2[0]){
      System.out.println("These ID's don't match, even though they were retrieved from the same thread.");
    }

  }

Basicamente, ele obtém o ID do segmento da fila de eventos, aguarda 5 segundos e, em seguida, obtém o ID novament

Por alguma razão, os IDs não correspondem. Aparentemente, o EventQueue foi destruído e recriado. Esse comportamento é normal? Isso está documentado em algum lugar? Isso é um bug? Mesmo que fosse uma instância diferente, ela não deveria ter o mesmo ID?

Se eu não executar oThread.sleep, os IDs corresponderão.

Minha outra pergunta é: como posso contornar isso? Estou usando um objeto que só pode ser acessado no segmento de criação. Se essa for a fila de eventos (que não necessariamente precisa ser), preciso verificar se ainda é a fila de eventos.

questionAnswers(1)

yourAnswerToTheQuestion