Dies ist eine allgemeine Java-Frage und nicht eine erste Android-Frage!Ausführen von Code auf dem Hauptthread von einem sekundären Thread?
Ich möchte wissen, wie Code aus dem Kontext eines sekundären Threads auf dem Hauptthread ausgeführt wird. Zum Beispiel:
new Thread(new Runnable() {
public void run() {
//work out pi to 1,000 DP (takes a while!)
//print the result on the main thread
}
}).start();
Dergleichen - Ich weiß, mein Beispiel ein wenig schlecht ist, da in Java Sie etwas aus zu drucken, nicht im Hauptthread sein müssen, und dass Schaukel hat auch eine Ereigniswarteschlange - aber die generische Situation, in der Sie möglicherweise laufen müssen, sagt im Kontext eines Hintergrundthreads eine ausführbare Anweisung für den Hauptthread.
EDIT: Zum Vergleich - hier ist, wie ich es in Objective-C tun würde:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0UL), ^{
//do background thread stuff
dispatch_async(dispatch_get_main_queue(), ^{
//update UI
});
});
Vielen Dank im Voraus!
Ah okay, also in der Praxis denke ich, dass diese Art den Zweck der Verwendung eines Hintergrundthreads vereitelt, da der Hauptthread blockiert ist und auf den Hintergrundthread wartet. Trotzdem sieht es wie ein ziemlich ordentlicher Mechanismus aus! Ich werde jetzt mehr über Warteschlangen lesen! – Javawag
Sie könnten sicherlich den Haupt-Thread einige andere Arbeit tun und nur in der Warteschlange in Abständen überprüfen, anstatt nichts zu tun, sondern darauf zu blockieren. Aber irgendwann hört es auf, Dinge zu Hause zu brauen. Swing bietet vollkommen gute Werkzeuge für :) – Affe
Eigentlich ist das eine ziemlich gute Idee für das, was ich tue - ich benutze Swing nicht, da das Projekt eigentlich ein einfaches Spiel ist mit der Slick2d-Engine (sonst hast du recht; ich würde einfach Swing's eingebaute Tools dafür verwenden!) – Javawag