Wie man einen Wert abruft, der für einen anderen Thread berechnet werden muss

In vielen Fällen erfordert Thread A einen Wert, der für Thread B berechnet werden muss. (Am häufigsten ist B == EDT.) Betrachten Sie dieses Beispiel:

String host;
SwingUtilities.invokeAndWait(new Runnable() {
    public void run() {
        host = JOptionPane.showInputDialog("Enter host name: ");
    }
});
openConnection(host);

Natürlich kompiliert dies nicht, da die anonyme innere Klasse nicht in @ schreiben darhost. Was ist der einfachste und sauberste Weg, um dies zum Laufen zu bringen? Ich habe die Möglichkeiten, die ich kenne, unten aufgeführt.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage