So implementieren Sie Leerlaufaufgaben in Java Swing

Ich habe eine GUI-App, die langsam wird. Ich möchte das Timing für verschiedene GUI-Aufgaben einführen. Viele unserer GUI-Aktionen lösen jedoch andere Aktionen aus, die dann "später aufgerufen" werden, um andere Aktionen auszulösen.

Schließlich beruhigt sich alles und es gibt nichts mehr zu tun. Zu diesem Zeitpunkt möchte ich einen Timer stoppen und angeben, wie lange diese GUI-Aktion gedauert hat.

Ich dachte, der Weg, dies zu tun, ist eine Methode namens zu implementiereninvokeOnceIdle(Runnable task). Die Methode führt die angegebene Aufgabe erst aus, wenn AWTEventQueue "leer" ist. d.h. die gelieferte "Aufgabe" sollte das Letzte in der Warteschlange sein.

Ein Weg, dies zu tun, wäre, wenn es einen Weg gibt, eine "niedrigste" Priorität zu spezifizierenSwingUtilities.invokeLater - aber das ist nicht möglich.

Als nächstes habe ich nachgesehen, ob ich später ein Runnable "aufrufen" kann, das prüft, ob die Ereigniswarteschlange "leer" ist - aber es gibt keinen öffentlichen Weg, um festzustellen, ob die Ereigniswarteschlange tatsächlich leer ist.

Wie geht das am besten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage