Cómo recuperar un valor que debe calcularse en otro hilo
Hay muchos casos en los que el subproceso A requiere un valor que debe calcularse en el subproceso B. (Lo más común, B == EDT). Considere este ejemplo:
String host;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
host = JOptionPane.showInputDialog("Enter host name: ");
}
});
openConnection(host);
Por supuesto, esto no se compila, porque la clase interna anónima no puede escribir enhost
. ¿Cuál es la forma más simple y limpia de hacer que esto funcione? He incluido las formas que conozco a continuación.