Getrennter Logik-Thread vom Event-Dispatch-Thread

9

Dies ist der kleinste ausführbare SSCCE meines Projekts, den ich implementieren könnte, um es Ihnen zu zeigen.

  • Ich habe gelesen, dass das Aufrufen der Spiellogik aus dem Event Dispacth Thread eine schlechte Übung ist , wie kann ich sie trennen, denn wie Sie sehen können update() und repaint() sind in Schleife verknüpft und wie kann ich Code auf hübsche Weise trennen, bekomme ich damit Probleme und versuche herauszufinden, wie es geht.

  • Ich habe eine ähnliche Frage gestellt und ich habe eine Antwort bekommen, die besagt, dass ich verwenden soll Swing Timer , aber ich habe eine große Aufgabe zu machen und wie ich Swing timer lesen ist nicht ideal für dieses Szenario. Das ist die Frage:

Hauptklasse

%Vor%

MeinePanel-Klasse

%Vor%     
OiRc 19.05.2014, 17:47
quelle

1 Antwort

4

So kann es aussehen. Sie müssen den folgenden Code irgendwo in EDT oder durch Swing Timer aufrufen. Ich gehe hier davon aus, dass Ihre "große" Aufgabe ein Textfeld aktualisieren muss, aber es kann auch jede andere UI-Steuerung sein. All das, nur um eine Idee zu demonstrieren. Behandeln Sie es nicht als getesteten Code.

%Vor%

HugeTaskRunner wird von AbstractTaskRunner abgeleitet, der wie folgt aussieht:

%Vor%

HugeTaskRunner:

%Vor%

CallBack-Klasse:

%Vor%

GUIUpdater-Klasse:

%Vor%     
Oleg Gryb 22.05.2014, 20:35
quelle