Como recuperar um valor que deve ser calculado em outro thread
Há muitos casos em que o segmento A requer um valor que deve ser calculado no segmento B. (Geralmente, B == EDT.) Considere este exemplo:
String host;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
host = JOptionPane.showInputDialog("Enter host name: ");
}
});
openConnection(host);
Obviamente, isso não é compilado, porque a classe interna anônima não tem permissão para gravar emhost
. Qual é a maneira mais simples e limpa de fazer isso funcionar? Incluí as maneiras que conheço abaixo.