Como implementar tarefa ociosa no Java Swing

Eu tenho um aplicativo GUI que está ficando muito lento. Eu quero começar a introduzir o tempo para várias tarefas GUI - no entanto, muitas das nossas ações GUI acionam outras ações que, em seguida, "invocar mais tarde" para acionar outras ações.

Eventualmente, tudo se acalma e não há mais nada a fazer. Neste momento, quero parar um cronômetro e informar quanto tempo essa "ação" da GUI demorou.

Eu percebi que a maneira de fazer isso é implementar um método chamadoinvokeOnceIdle(Runnable task). O método executará a tarefa fornecida somente quando o AWTEventQueue estiver "vazio". ou seja, a "tarefa" fornecida deve ser a última coisa na fila.

Uma maneira de fazer isso seria se houver uma maneira de especificar uma prioridade "mais baixa" paraSwingUtilities.invokeLater - mas isso não é possível.

Em seguida, olhei para ver se eu poderia "invokeLater" um Runnable que verifica se a fila de eventos está "vazia" - mas não há nenhuma maneira pública de ver se a fila de eventos está realmente vazia.

Qual é a melhor forma de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion