Cómo implementar tareas inactivas en Java Swing

Tengo una aplicación GUI que se está volviendo bastante lenta. Quiero comenzar a introducir el tiempo para varias tareas de la GUI. Sin embargo, muchas de nuestras acciones de la GUI activan otras acciones que luego "invocan más tarde" para activar otras acciones.

Eventualmente, todo se establece y no hay nada más que hacer. En este momento, quiero detener un temporizador e informar el tiempo que duró la "acción" de la GUI.

Pensé que la manera de hacer esto es implementar un método llamadoinvokeOnceIdle(Runnable task). El método ejecutará la tarea suministrada solo una vez que AWTEventQueue esté "vacío". es decir, la "tarea" suministrada debe ser la última cosa en la cola.

Una forma de hacerlo sería si hay una manera de especificar una prioridad "más baja" paraSwingUtilities.invokeLater - Pero esto no es posible.

A continuación, busqué para ver si podía "invocarLater" un Runnable que verifique si la cola de eventos está "vacía", pero no hay una forma pública de ver si la cola de eventos está realmente vacía.

¿Cuál es la mejor manera de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta