Inicialización de la aplicación y pantalla de bienvenida con barra de progreso (Swing)

Hemos construido una pantalla de bienvenida para nuestra aplicación. Funciona bien cuando la inicialización de la aplicación está en el hilo principal, pero cuando muevo la inicialización en EDT (SwingUtilities.invokeLater en el método principal), la barra de progreso y la etiqueta de información no se repiten debido al bloqueo de EDT. Sé que usar invokeLater puede ayudarme a volver a pintar la GUI. Pero mi problema es: es realmente difícil dividir la inicialización de la aplicación en partes separadas (código heredado). E incluso si lo hago, obtendré un código matroshka feo (seis veces invokeLater en invokeLater).

¿Qué solución debería preferir?

Deje la inicialización en el hilo principal (mi decisión actual)Intente moverlo a EDT (si es posible) y obtenga el código matroshkaUso de Foxtrot lib para proporcionar un sueño sin bloqueo en EDT cada vez que actualizo la pantalla de inicio (funciona bien, la pantalla de inicio puede volver a pintarse, pero es un truco para mí)

¿Probablemente alguien tiene una mejor solución?

PD Ya he leído algunas preguntas similares aquí, pero no encontré nada útil para mí.

Respuestas a la pregunta(1)

Su respuesta a la pregunta