Как получить значение, которое должно быть вычислено в другом потоке
Во многих случаях поток A требует значение, которое должно быть вычислено в потоке B. (Чаще всего B == EDT.) Рассмотрим этот пример:
String host;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
host = JOptionPane.showInputDialog("Enter host name: ");
}
});
openConnection(host);
Конечно, это не компилируется, потому что анонимному внутреннему классу не разрешено писать вhost
, Какой самый простой, самый чистый способ заставить это работать? Я включил способы, которые я знаю ниже.