Las Bibliotecas de JavaLas Bibliotecas de Java\Future (interface)

Future<V> (interface)

public interface Future<V>

 

Son objetos utilizados por los Executors para devolver el resultado de la ejecución de un thread Callable<V>.

Sea por ejemplo una clase que devuelve una String

class Worker implements Callable<String> {

   public String call() throws Exception {

      ...

      return string;

   }

}

 

Creamos un objeto de dicha clase

Callable<String> worker = new T();

 

Si tenemos un ExecutorService

ExecutorService service = ...

 

le podemos pasar el objeto para que lo lance como thread

Future<String> future = service.submit(worker);

 

Este future de momento es mera promesa.

Cuando queramos saber el valor calculado

String valor = future.get();

 

La llamada a get() bloquea la ejecución hasta que el thread worker ha completado su cálculo.

Ver ejemplo en “call()”.

V get()

Espera hasta que el thread termine y devuelve el resultado.

V get(long time, TimeUnit unit)

Espera hasta un cierto tiempo máximo. Si está el valor disponible, lo devuelve. Si no, lanza una interrupción.

boolean isDone()

Devuelve TRUE si el thread ha terminado y el valor está disponible.

principio