Как получить значение, которое должно быть вычислено в другом потоке

Во многих случаях поток A требует значение, которое должно быть вычислено в потоке B. (Чаще всего B == EDT.) Рассмотрим этот пример:

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

Конечно, это не компилируется, потому что анонимному внутреннему классу не разрешено писать вhost, Какой самый простой, самый чистый способ заставить это работать? Я включил способы, которые я знаю ниже.

Ответы на вопрос(7)

Ваш ответ на вопрос